arm_compute v17.06
diff --git a/documentation/namespacearm__compute.xhtml b/documentation/namespacearm__compute.xhtml
index 15c085d..d5fb38d 100644
--- a/documentation/namespacearm__compute.xhtml
+++ b/documentation/namespacearm__compute.xhtml
@@ -6,7 +6,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<meta name="robots" content="NOINDEX, NOFOLLOW" /> <!-- Prevent indexing by search engines -->
-<title>ARM Compute Library: arm_compute Namespace Reference</title>
+<title>Compute Library: arm_compute Namespace Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -39,8 +39,8 @@
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
- <div id="projectname">ARM Compute Library
-  <span id="projectnumber">17.05</span>
+ <div id="projectname">Compute Library
+  <span id="projectnumber">v17.06</span>
</div>
</td>
</tr>
@@ -55,6 +55,7 @@
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.xhtml"><span>Main Page</span></a></li>
+ <li><a href="pages.xhtml"><span>Related Pages</span></a></li>
<li class="current"><a href="namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="annotated.xhtml"><span>Data Structures</span></a></li>
<li><a href="files.xhtml"><span>Files</span></a></li>
@@ -128,6 +129,14 @@
Namespaces</h2></td></tr>
<tr class="memitem:namespacearm__compute_1_1cpp14"><td class="memItemLeft" align="right" valign="top">  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1cpp14.xhtml">cpp14</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:namespacearm__compute_1_1detail"><td class="memItemLeft" align="right" valign="top">  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1detail.xhtml">detail</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:namespacearm__compute_1_1test"><td class="memItemLeft" align="right" valign="top">  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1test.xhtml">test</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:namespacearm__compute_1_1traits"><td class="memItemLeft" align="right" valign="top">  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1traits.xhtml">traits</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:namespacearm__compute_1_1utils"><td class="memItemLeft" align="right" valign="top">  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1utils.xhtml">utils</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
@@ -203,6 +212,12 @@
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_array.xhtml">CLArray</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classarm__compute_1_1_c_l_array.xhtml" title="CLArray implementation. ">CLArray</a> implementation. <a href="classarm__compute_1_1_c_l_array.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_batch_normalization_layer.xhtml">CLBatchNormalizationLayer</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Basic function to run <a class="el" href="classarm__compute_1_1_c_l_normalization_layer_kernel.xhtml">CLNormalizationLayerKernel</a> and simulate a batch normalization layer. <a href="classarm__compute_1_1_c_l_batch_normalization_layer.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_batch_normalization_layer_kernel.xhtml">CLBatchNormalizationLayerKernel</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Interface for the BatchNormalization layer kernel. <a href="classarm__compute_1_1_c_l_batch_normalization_layer_kernel.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_bitwise_and.xhtml">CLBitwiseAnd</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Basic function to run <a class="el" href="classarm__compute_1_1_c_l_bitwise_and_kernel.xhtml">CLBitwiseAndKernel</a>. <a href="classarm__compute_1_1_c_l_bitwise_and.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
@@ -269,6 +284,9 @@
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_convolution_layer.xhtml">CLConvolutionLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Basic function to compute the convolution layer. <a href="classarm__compute_1_1_c_l_convolution_layer.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_convolution_layer_reshape_weights.xhtml">CLConvolutionLayerReshapeWeights</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Function to reshape and transpose the weights. <a href="classarm__compute_1_1_c_l_convolution_layer_reshape_weights.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_convolution_layer_weights_reshape_kernel.xhtml">CLConvolutionLayerWeightsReshapeKernel</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Interface for the weights reshape kernel used by convolution and fully connected layers. <a href="classarm__compute_1_1_c_l_convolution_layer_weights_reshape_kernel.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
@@ -284,6 +302,12 @@
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_copy_to_array_kernel.xhtml">CLCopyToArrayKernel</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">CL kernel to copy keypoints information to ICLKeyPointArray and counts the number of key points. <a href="classarm__compute_1_1_c_l_copy_to_array_kernel.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_depth_concatenate.xhtml">CLDepthConcatenate</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Basic function to execute concatenate tensors along z axis. <a href="classarm__compute_1_1_c_l_depth_concatenate.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_depth_concatenate_kernel.xhtml">CLDepthConcatenateKernel</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Interface for the depth concatenate kernel. <a href="classarm__compute_1_1_c_l_depth_concatenate_kernel.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_depth_convert.xhtml">CLDepthConvert</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Basic function to run <a class="el" href="classarm__compute_1_1_c_l_depth_convert_kernel.xhtml">CLDepthConvertKernel</a>. <a href="classarm__compute_1_1_c_l_depth_convert.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
@@ -335,6 +359,9 @@
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_fully_connected_layer.xhtml">CLFullyConnectedLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Basic function to compute a Fully Connected layer on OpenCL. <a href="classarm__compute_1_1_c_l_fully_connected_layer.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_fully_connected_layer_reshape_weights.xhtml">CLFullyConnectedLayerReshapeWeights</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Basic function to reshape the weights of Fully Connected layer with OpenCL. <a href="classarm__compute_1_1_c_l_fully_connected_layer_reshape_weights.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_gaussian3x3.xhtml">CLGaussian3x3</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Basic function to execute gaussian filter 3x3. <a href="classarm__compute_1_1_c_l_gaussian3x3.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
@@ -410,6 +437,30 @@
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_histogram_kernel.xhtml">CLHistogramKernel</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Interface to run the histogram kernel. <a href="classarm__compute_1_1_c_l_histogram_kernel.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_h_o_g.xhtml">CLHOG</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">OpenCL implementation of <a class="el" href="classarm__compute_1_1_h_o_g.xhtml" title="CPU implementation of HOG data-object. ">HOG</a> data-object. <a href="classarm__compute_1_1_c_l_h_o_g.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_h_o_g_block_normalization_kernel.xhtml">CLHOGBlockNormalizationKernel</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">OpenCL kernel to perform <a class="el" href="classarm__compute_1_1_h_o_g.xhtml" title="CPU implementation of HOG data-object. ">HOG</a> block normalization. <a href="classarm__compute_1_1_c_l_h_o_g_block_normalization_kernel.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_h_o_g_descriptor.xhtml">CLHOGDescriptor</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Basic function to calculate <a class="el" href="classarm__compute_1_1_h_o_g.xhtml" title="CPU implementation of HOG data-object. ">HOG</a> descriptor. <a href="classarm__compute_1_1_c_l_h_o_g_descriptor.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_h_o_g_detector.xhtml">CLHOGDetector</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Basic function to execute <a class="el" href="classarm__compute_1_1_h_o_g.xhtml" title="CPU implementation of HOG data-object. ">HOG</a> detector based on linear SVM. <a href="classarm__compute_1_1_c_l_h_o_g_detector.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_h_o_g_detector_kernel.xhtml">CLHOGDetectorKernel</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">OpenCL kernel to perform <a class="el" href="classarm__compute_1_1_h_o_g.xhtml" title="CPU implementation of HOG data-object. ">HOG</a> detector kernel using linear SVM. <a href="classarm__compute_1_1_c_l_h_o_g_detector_kernel.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_h_o_g_gradient.xhtml">CLHOGGradient</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Basic function to calculate the gradient for <a class="el" href="classarm__compute_1_1_h_o_g.xhtml" title="CPU implementation of HOG data-object. ">HOG</a>. <a href="classarm__compute_1_1_c_l_h_o_g_gradient.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_h_o_g_multi_detection.xhtml">CLHOGMultiDetection</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Basic function to detect multiple objects (or the same object at different scales) on the same input image using <a class="el" href="classarm__compute_1_1_h_o_g.xhtml" title="CPU implementation of HOG data-object. ">HOG</a>. <a href="classarm__compute_1_1_c_l_h_o_g_multi_detection.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_h_o_g_orientation_binning_kernel.xhtml">CLHOGOrientationBinningKernel</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">OpenCL kernel to perform <a class="el" href="classarm__compute_1_1_h_o_g.xhtml" title="CPU implementation of HOG data-object. ">HOG</a> Orientation Binning. <a href="classarm__compute_1_1_c_l_h_o_g_orientation_binning_kernel.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_im2_col_kernel.xhtml">CLIm2ColKernel</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Interface for the im2col reshape kernel. <a href="classarm__compute_1_1_c_l_im2_col_kernel.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
@@ -446,6 +497,15 @@
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_l_k_tracker_stage1_kernel.xhtml">CLLKTrackerStage1Kernel</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Interface to run the second stage of LKTracker, where the motion vectors of the given points are computed. <a href="classarm__compute_1_1_c_l_l_k_tracker_stage1_kernel.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_locally_connected_layer.xhtml">CLLocallyConnectedLayer</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Basic function to compute the locally connected layer. <a href="classarm__compute_1_1_c_l_locally_connected_layer.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_locally_connected_layer_weights_reshape_kernel.xhtml">CLLocallyConnectedLayerWeightsReshapeKernel</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Interface for the weights reshape kernel used by locally connected layers. <a href="classarm__compute_1_1_c_l_locally_connected_layer_weights_reshape_kernel.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_locally_connected_matrix_multiply_kernel.xhtml">CLLocallyConnectedMatrixMultiplyKernel</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">OpenCL kernel to multiply each row of first tensor with low 2 dimensions of second tensor. <a href="classarm__compute_1_1_c_l_locally_connected_matrix_multiply_kernel.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_logits1_d_max_kernel.xhtml">CLLogits1DMaxKernel</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Interface for the identifying the max value of 1D Logits. <a href="classarm__compute_1_1_c_l_logits1_d_max_kernel.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
@@ -488,6 +548,9 @@
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_min_max_location_kernel.xhtml">CLMinMaxLocationKernel</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Interface for the kernel to find min max locations of an image. <a href="classarm__compute_1_1_c_l_min_max_location_kernel.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_multi_h_o_g.xhtml">CLMultiHOG</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Basic implementation of the CL multi <a class="el" href="classarm__compute_1_1_h_o_g.xhtml" title="CPU implementation of HOG data-object. ">HOG</a> data-objects. <a href="classarm__compute_1_1_c_l_multi_h_o_g.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_multi_image.xhtml">CLMultiImage</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Basic implementation of the CL multi-planar image interface. <a href="classarm__compute_1_1_c_l_multi_image.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
@@ -587,6 +650,9 @@
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_softmax_layer.xhtml">CLSoftmaxLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Basic function to compute a SoftmaxLayer. <a href="classarm__compute_1_1_c_l_softmax_layer.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_sub_tensor.xhtml">CLSubTensor</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Basic implementation of the OpenCL sub-tensor interface. <a href="classarm__compute_1_1_c_l_sub_tensor.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_table_lookup.xhtml">CLTableLookup</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Basic function to run <a class="el" href="classarm__compute_1_1_c_l_table_lookup_kernel.xhtml">CLTableLookupKernel</a>. <a href="classarm__compute_1_1_c_l_table_lookup.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
@@ -623,6 +689,8 @@
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_warp_perspective_kernel.xhtml">CLWarpPerspectiveKernel</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Interface for the warp perspective kernel. <a href="classarm__compute_1_1_c_l_warp_perspective_kernel.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_weights_reshape_kernel.xhtml">CLWeightsReshapeKernel</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_coordinates.xhtml">Coordinates</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classarm__compute_1_1_coordinates.xhtml" title="Coordinates of an item. ">Coordinates</a> of an item. <a href="classarm__compute_1_1_coordinates.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
@@ -635,8 +703,11 @@
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_p_p_corner_candidates_kernel.xhtml">CPPCornerCandidatesKernel</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">CPP kernel to perform corner candidates. <a href="classarm__compute_1_1_c_p_p_corner_candidates_kernel.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_p_p_detection_window_non_maxima_suppression_kernel.xhtml">CPPDetectionWindowNonMaximaSuppressionKernel</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">CPP kernel to perform in-place computation of euclidean distance on IDetectionWindowArray. <a href="classarm__compute_1_1_c_p_p_detection_window_non_maxima_suppression_kernel.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_p_p_scheduler.xhtml">CPPScheduler</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Pool of threads to automatically split a kernel's execution among several threads. <a href="classarm__compute_1_1_c_p_p_scheduler.xhtml#details">More...</a><br /></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">C++11 implementation of a pool of threads to automatically split a kernel's execution among several threads. <a href="classarm__compute_1_1_c_p_p_scheduler.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_p_p_sort_euclidean_distance_kernel.xhtml">CPPSortEuclideanDistanceKernel</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">CPP kernel to perform sorting and euclidean distance. <a href="classarm__compute_1_1_c_p_p_sort_euclidean_distance_kernel.xhtml#details">More...</a><br /></td></tr>
@@ -650,6 +721,11 @@
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_distribution1_d.xhtml">Distribution1D</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Basic implementation of the 1D distribution interface. <a href="classarm__compute_1_1_distribution1_d.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structarm__compute_1_1enable__bitwise__ops.xhtml">enable_bitwise_ops</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structarm__compute_1_1enable__bitwise__ops_3_01arm__compute_1_1_g_p_u_target_01_4.xhtml">enable_bitwise_ops< arm_compute::GPUTarget ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Enable operation operations on GPUTarget enumerations. <a href="structarm__compute_1_1enable__bitwise__ops_3_01arm__compute_1_1_g_p_u_target_01_4.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_h_o_g.xhtml">HOG</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">CPU implementation of <a class="el" href="classarm__compute_1_1_h_o_g.xhtml" title="CPU implementation of HOG data-object. ">HOG</a> data-object. <a href="classarm__compute_1_1_h_o_g.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
@@ -668,12 +744,18 @@
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_i_c_l_distribution1_d.xhtml">ICLDistribution1D</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classarm__compute_1_1_i_c_l_distribution1_d.xhtml" title="ICLDistribution1D interface class. ">ICLDistribution1D</a> interface class. <a href="classarm__compute_1_1_i_c_l_distribution1_d.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_i_c_l_h_o_g.xhtml">ICLHOG</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Interface for OpenCL <a class="el" href="classarm__compute_1_1_h_o_g.xhtml" title="CPU implementation of HOG data-object. ">HOG</a> data-object. <a href="classarm__compute_1_1_i_c_l_h_o_g.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_i_c_l_kernel.xhtml">ICLKernel</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Common interface for all the OpenCL kernels. <a href="classarm__compute_1_1_i_c_l_kernel.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_i_c_l_lut.xhtml">ICLLut</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Interface for OpenCL LUT. <a href="classarm__compute_1_1_i_c_l_lut.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_i_c_l_multi_h_o_g.xhtml">ICLMultiHOG</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Interface for storing multiple <a class="el" href="classarm__compute_1_1_h_o_g.xhtml" title="CPU implementation of HOG data-object. ">HOG</a> data-objects. <a href="classarm__compute_1_1_i_c_l_multi_h_o_g.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_i_c_l_multi_image.xhtml">ICLMultiImage</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Interface for OpenCL multi-planar images. <a href="classarm__compute_1_1_i_c_l_multi_image.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
@@ -740,14 +822,20 @@
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_i_pyramid.xhtml">IPyramid</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Interface for pyramid data-object. <a href="classarm__compute_1_1_i_pyramid.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_i_scheduler.xhtml">IScheduler</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classarm__compute_1_1_scheduler.xhtml" title="Configurable scheduler which supports multiple multithreading APIs and choosing between different sch...">Scheduler</a> interface to run kernels. <a href="classarm__compute_1_1_i_scheduler.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_i_tensor.xhtml">ITensor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Interface for NEON tensor. <a href="classarm__compute_1_1_i_tensor.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_i_tensor_allocator.xhtml">ITensorAllocator</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Interface to allocate tensors. <a href="classarm__compute_1_1_i_tensor_allocator.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml">ITensorInfo</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Store the tensor's metadata. <a href="classarm__compute_1_1_i_tensor_info.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_iterator.xhtml">Iterator</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classarm__compute_1_1_iterator.xhtml" title="Iterator updated by execute_window_loop for each window element. ">Iterator</a> updated by <a class="el" href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">execute_window_loop</a> for each window element. <a href="classarm__compute_1_1_iterator.xhtml#details">More...</a><br /></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classarm__compute_1_1_iterator.xhtml" title="Iterator updated by execute_window_loop for each window element. ">Iterator</a> updated by <a class="el" href="namespacearm__compute.xhtml#a6c0dcc38187027dcb89cd9724bc5a823">execute_window_loop</a> for each window element. <a href="classarm__compute_1_1_iterator.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_kernel.xhtml">Kernel</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classarm__compute_1_1_kernel.xhtml" title="Kernel class. ">Kernel</a> class. <a href="classarm__compute_1_1_kernel.xhtml#details">More...</a><br /></td></tr>
@@ -815,6 +903,12 @@
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_arithmetic_subtraction_kernel.xhtml">NEArithmeticSubtractionKernel</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Interface for the kernel to perform subtraction between two tensors. <a href="classarm__compute_1_1_n_e_arithmetic_subtraction_kernel.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_batch_normalization_layer.xhtml">NEBatchNormalizationLayer</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Basic function to run <a class="el" href="classarm__compute_1_1_n_e_normalization_layer_kernel.xhtml">NENormalizationLayerKernel</a> and simulate a batch normalization layer. <a href="classarm__compute_1_1_n_e_batch_normalization_layer.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_batch_normalization_layer_kernel.xhtml">NEBatchNormalizationLayerKernel</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Interface for the batch normalization layer kernel. <a href="classarm__compute_1_1_n_e_batch_normalization_layer_kernel.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_bitwise_and.xhtml">NEBitwiseAnd</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Basic function to run <a class="el" href="classarm__compute_1_1_n_e_bitwise_and_kernel.xhtml">NEBitwiseAndKernel</a>. <a href="classarm__compute_1_1_n_e_bitwise_and.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
@@ -881,8 +975,8 @@
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_convolution_layer.xhtml">NEConvolutionLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Basic function to simulate a convolution layer. <a href="classarm__compute_1_1_n_e_convolution_layer.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_convolution_layer_weights_reshape_kernel.xhtml">NEConvolutionLayerWeightsReshapeKernel</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">NEON kernel to perform reshaping on the weights used by convolution layer. <a href="classarm__compute_1_1_n_e_convolution_layer_weights_reshape_kernel.xhtml#details">More...</a><br /></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_convolution_layer_reshape_weights.xhtml">NEConvolutionLayerReshapeWeights</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Function to reshape and perform 1xW transposition on the weights. <a href="classarm__compute_1_1_n_e_convolution_layer_reshape_weights.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_convolution_rectangle.xhtml">NEConvolutionRectangle</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Basic function to execute non-square convolution. <a href="classarm__compute_1_1_n_e_convolution_rectangle.xhtml#details">More...</a><br /></td></tr>
@@ -896,6 +990,12 @@
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_cumulative_distribution_kernel.xhtml">NECumulativeDistributionKernel</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Interface for the cumulative distribution (cummulative summmation) calculation kernel. <a href="classarm__compute_1_1_n_e_cumulative_distribution_kernel.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_depth_concatenate.xhtml">NEDepthConcatenate</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Basic function to execute concatenate tensors along z axis. <a href="classarm__compute_1_1_n_e_depth_concatenate.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_depth_concatenate_kernel.xhtml">NEDepthConcatenateKernel</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Interface for the depth concatenate kernel. <a href="classarm__compute_1_1_n_e_depth_concatenate_kernel.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_depth_convert.xhtml">NEDepthConvert</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Basic function to run <a class="el" href="classarm__compute_1_1_n_e_depth_convert_kernel.xhtml">NEDepthConvertKernel</a>. <a href="classarm__compute_1_1_n_e_depth_convert.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
@@ -914,6 +1014,15 @@
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_dilate_kernel.xhtml">NEDilateKernel</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Interface for the kernel to perform boolean image dilatation. <a href="classarm__compute_1_1_n_e_dilate_kernel.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_direct_convolution_layer.xhtml">NEDirectConvolutionLayer</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Function to run the direct convolution. <a href="classarm__compute_1_1_n_e_direct_convolution_layer.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_direct_convolution_layer_bias_accumulate_kernel.xhtml">NEDirectConvolutionLayerBiasAccumulateKernel</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">NEON kernel to accumulate the biases to each element of the input tensor. <a href="classarm__compute_1_1_n_e_direct_convolution_layer_bias_accumulate_kernel.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_direct_convolution_layer_kernel.xhtml">NEDirectConvolutionLayerKernel</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">NEON interface for Direct Convolution Layer kernel. <a href="classarm__compute_1_1_n_e_direct_convolution_layer_kernel.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_edge_non_max_suppression_kernel.xhtml">NEEdgeNonMaxSuppressionKernel</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">NEON kernel to perform Non-Maxima suppression for Canny Edge. <a href="classarm__compute_1_1_n_e_edge_non_max_suppression_kernel.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
@@ -950,6 +1059,9 @@
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_fully_connected_layer.xhtml">NEFullyConnectedLayer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Basic function to compute a Fully Connected layer on NEON. <a href="classarm__compute_1_1_n_e_fully_connected_layer.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_fully_connected_layer_reshape_weights.xhtml">NEFullyConnectedLayerReshapeWeights</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Basic function to reshape the weights of Fully Connected layer with NEON. <a href="classarm__compute_1_1_n_e_fully_connected_layer_reshape_weights.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_gaussian3x3.xhtml">NEGaussian3x3</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Basic function to execute gaussian filter 3x3. <a href="classarm__compute_1_1_n_e_gaussian3x3.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
@@ -1005,10 +1117,10 @@
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">NEON kernel to multiply two input matrices "A" and "B". <a href="classarm__compute_1_1_n_e_g_e_m_m_matrix_multiply_kernel.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_g_e_m_m_transpose1x_w.xhtml">NEGEMMTranspose1xW</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Basic function to execute <a class="el" href="classarm__compute_1_1_n_e_g_e_m_m_transpose1x_w_kernel.xhtml" title="NEON kernel which transposes the elements of a matrix in chunks of 1x4 if the input data type is F32 ...">NEGEMMTranspose1xWKernel</a>. <a href="classarm__compute_1_1_n_e_g_e_m_m_transpose1x_w.xhtml#details">More...</a><br /></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Basic function to execute <a class="el" href="classarm__compute_1_1_n_e_g_e_m_m_transpose1x_w_kernel.xhtml" title="NEON kernel which transposes the elements of a matrix in chunks of 1xW, where W is equal to (16 / ele...">NEGEMMTranspose1xWKernel</a>. <a href="classarm__compute_1_1_n_e_g_e_m_m_transpose1x_w.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_g_e_m_m_transpose1x_w_kernel.xhtml">NEGEMMTranspose1xWKernel</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">NEON kernel which transposes the elements of a matrix in chunks of 1x4 if the input data type is F32 or in chunks of 1x8 if the input data type is F16. <a href="classarm__compute_1_1_n_e_g_e_m_m_transpose1x_w_kernel.xhtml#details">More...</a><br /></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">NEON kernel which transposes the elements of a matrix in chunks of 1xW, where W is equal to (16 / element size of the tensor) <a href="classarm__compute_1_1_n_e_g_e_m_m_transpose1x_w_kernel.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_gradient_f_p16_kernel.xhtml">NEGradientFP16Kernel</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">NEON kernel to perform Gradient computation. <a href="classarm__compute_1_1_n_e_gradient_f_p16_kernel.xhtml#details">More...</a><br /></td></tr>
@@ -1049,9 +1161,6 @@
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_h_o_g_multi_detection.xhtml">NEHOGMultiDetection</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Basic function to detect multiple objects (or the same object at different scales) on the same input image using <a class="el" href="classarm__compute_1_1_h_o_g.xhtml" title="CPU implementation of HOG data-object. ">HOG</a>. <a href="classarm__compute_1_1_n_e_h_o_g_multi_detection.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_h_o_g_non_maxima_suppression_kernel.xhtml">NEHOGNonMaximaSuppressionKernel</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">NEON kernel to perform in-place computation of euclidean distance based non-maxima suppression for <a class="el" href="classarm__compute_1_1_h_o_g.xhtml" title="CPU implementation of HOG data-object. ">HOG</a>. <a href="classarm__compute_1_1_n_e_h_o_g_non_maxima_suppression_kernel.xhtml#details">More...</a><br /></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_h_o_g_orientation_binning_kernel.xhtml">NEHOGOrientationBinningKernel</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">NEON kernel to perform <a class="el" href="classarm__compute_1_1_h_o_g.xhtml" title="CPU implementation of HOG data-object. ">HOG</a> Orientation Binning. <a href="classarm__compute_1_1_n_e_h_o_g_orientation_binning_kernel.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
@@ -1076,6 +1185,12 @@
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_l_k_tracker_kernel.xhtml">NELKTrackerKernel</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Interface for the Lucas-Kanade tracker kernel. <a href="classarm__compute_1_1_n_e_l_k_tracker_kernel.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_locally_connected_layer.xhtml">NELocallyConnectedLayer</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Basic function to compute the locally connected layer. <a href="classarm__compute_1_1_n_e_locally_connected_layer.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_locally_connected_matrix_multiply_kernel.xhtml">NELocallyConnectedMatrixMultiplyKernel</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">NEON kernel to multiply each row of first tensor with low 2 dimensions of second tensor. <a href="classarm__compute_1_1_n_e_locally_connected_matrix_multiply_kernel.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_logits1_d_max_kernel.xhtml">NELogits1DMaxKernel</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Interface for the identifying the max value of 1D Logits. <a href="classarm__compute_1_1_n_e_logits1_d_max_kernel.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
@@ -1235,9 +1350,15 @@
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_warp_perspective_kernel.xhtml">NEWarpPerspectiveKernel</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Template interface for the kernel to compute warp perspective. <a href="classarm__compute_1_1_n_e_warp_perspective_kernel.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_weights_reshape_kernel.xhtml">NEWeightsReshapeKernel</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">NEON kernel to perform reshaping on the weights used by convolution and locally connected layer. <a href="classarm__compute_1_1_n_e_weights_reshape_kernel.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_normalization_layer_info.xhtml">NormalizationLayerInfo</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Normalization Layer Information class. <a href="classarm__compute_1_1_normalization_layer_info.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_o_m_p_scheduler.xhtml">OMPScheduler</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Pool of threads to automatically split a kernel's execution among several threads. <a href="classarm__compute_1_1_o_m_p_scheduler.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Padding and stride information class. <a href="classarm__compute_1_1_pad_stride_info.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
@@ -1259,6 +1380,12 @@
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structarm__compute_1_1_rectangle.xhtml">Rectangle</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="structarm__compute_1_1_rectangle.xhtml" title="Rectangle type. ">Rectangle</a> type. <a href="structarm__compute_1_1_rectangle.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_scheduler.xhtml">Scheduler</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Configurable scheduler which supports multiple multithreading APIs and choosing between different schedulers at runtime. <a href="classarm__compute_1_1_scheduler.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_single_thread_scheduler.xhtml">SingleThreadScheduler</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Pool of threads to automatically split a kernel's execution among several threads. <a href="classarm__compute_1_1_single_thread_scheduler.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_size2_d.xhtml">Size2D</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Class for specifying the size of an image or rectangle. <a href="classarm__compute_1_1_size2_d.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
@@ -1268,6 +1395,12 @@
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_strides.xhtml">Strides</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classarm__compute_1_1_strides.xhtml" title="Strides of an item in bytes. ">Strides</a> of an item in bytes. <a href="classarm__compute_1_1_strides.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_sub_tensor.xhtml">SubTensor</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Basic implementation of the sub-tensor interface. <a href="classarm__compute_1_1_sub_tensor.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_sub_tensor_info.xhtml">SubTensorInfo</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Store the sub tensor's metadata. <a href="classarm__compute_1_1_sub_tensor_info.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_tensor.xhtml">Tensor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Basic implementation of the tensor interface. <a href="classarm__compute_1_1_tensor.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
@@ -1282,6 +1415,9 @@
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structarm__compute_1_1_valid_region.xhtml">ValidRegion</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_weights_info.xhtml">WeightsInfo</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Convolution Layer Weights Information class. <a href="classarm__compute_1_1_weights_info.xhtml#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_window.xhtml">Window</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Describe a multidimensional execution window. <a href="classarm__compute_1_1_window.xhtml#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
@@ -1348,6 +1484,15 @@
<tr class="separator:a0339a19c93dde6754834a7d4ec7dab73"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ac20902ac1ef01783c8a8d71a9bdf1100"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ac20902ac1ef01783c8a8d71a9bdf1100">IImage</a> = <a class="el" href="classarm__compute_1_1_i_tensor.xhtml">ITensor</a></td></tr>
<tr class="separator:ac20902ac1ef01783c8a8d71a9bdf1100"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4c3f681c30c9398c45bc3cd5dc4f038a"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> = int8_t</td></tr>
+<tr class="memdesc:a4c3f681c30c9398c45bc3cd5dc4f038a"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point scalar value <a href="#a4c3f681c30c9398c45bc3cd5dc4f038a">More...</a><br /></td></tr>
+<tr class="separator:a4c3f681c30c9398c45bc3cd5dc4f038a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1521eea74b97de8f2df9304e44179400"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> = int16_t</td></tr>
+<tr class="memdesc:a1521eea74b97de8f2df9304e44179400"><td class="mdescLeft"> </td><td class="mdescRight">16 bit fixed point scalar value <a href="#a1521eea74b97de8f2df9304e44179400">More...</a><br /></td></tr>
+<tr class="separator:a1521eea74b97de8f2df9304e44179400"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa06c95f9976f3729316d689b4419089f"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#aa06c95f9976f3729316d689b4419089f">qint32_t</a> = int32_t</td></tr>
+<tr class="memdesc:aa06c95f9976f3729316d689b4419089f"><td class="mdescLeft"> </td><td class="mdescRight">32 bit fixed point scalar value <a href="#aa06c95f9976f3729316d689b4419089f">More...</a><br /></td></tr>
+<tr class="separator:aa06c95f9976f3729316d689b4419089f"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ab56a557a5fdf97819f23c35c24f0b0d2"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ab56a557a5fdf97819f23c35c24f0b0d2">IKeyPointArray</a> = <a class="el" href="classarm__compute_1_1_i_array.xhtml">IArray</a>< <a class="el" href="structarm__compute_1_1_key_point.xhtml">KeyPoint</a> ></td></tr>
<tr class="separator:ab56a557a5fdf97819f23c35c24f0b0d2"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:aac9efd49d3bbbd53779713e5fb37de62"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#aac9efd49d3bbbd53779713e5fb37de62">ICoordinates2DArray</a> = <a class="el" href="classarm__compute_1_1_i_array.xhtml">IArray</a>< <a class="el" href="structarm__compute_1_1_coordinates2_d.xhtml">Coordinates2D</a> ></td></tr>
@@ -1404,6 +1549,54 @@
<tr class="separator:a6310d21f215fface41df4cde725a62b9"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a19699533eb1b662e46a10715f6086487"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a19699533eb1b662e46a10715f6086487">INELKInternalKeypointArray</a> = <a class="el" href="classarm__compute_1_1_i_array.xhtml">IArray</a>< <a class="el" href="structarm__compute_1_1_n_e_l_k_internal_keypoint.xhtml">NELKInternalKeypoint</a> ></td></tr>
<tr class="separator:a19699533eb1b662e46a10715f6086487"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a16a1bee14f1db073f75caa76dacf5078"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> = int8x8_t</td></tr>
+<tr class="memdesc:a16a1bee14f1db073f75caa76dacf5078"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point vector with 8 elements <a href="#a16a1bee14f1db073f75caa76dacf5078">More...</a><br /></td></tr>
+<tr class="separator:a16a1bee14f1db073f75caa76dacf5078"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ace2375b626995858a398e1ffb3108f14"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ace2375b626995858a398e1ffb3108f14">qint8x8x2_t</a> = int8x8x2_t</td></tr>
+<tr class="memdesc:ace2375b626995858a398e1ffb3108f14"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point vector with 16 elements <a href="#ace2375b626995858a398e1ffb3108f14">More...</a><br /></td></tr>
+<tr class="separator:ace2375b626995858a398e1ffb3108f14"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a252c74fae9a9238ef7c23d306e670706"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a252c74fae9a9238ef7c23d306e670706">qint8x8x3_t</a> = int8x8x3_t</td></tr>
+<tr class="memdesc:a252c74fae9a9238ef7c23d306e670706"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point vector with 24 elements <a href="#a252c74fae9a9238ef7c23d306e670706">More...</a><br /></td></tr>
+<tr class="separator:a252c74fae9a9238ef7c23d306e670706"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a01ae65c0a0736d4293e657a66bde1538"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a01ae65c0a0736d4293e657a66bde1538">qint8x8x4_t</a> = int8x8x4_t</td></tr>
+<tr class="memdesc:a01ae65c0a0736d4293e657a66bde1538"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point vector with 32 elements <a href="#a01ae65c0a0736d4293e657a66bde1538">More...</a><br /></td></tr>
+<tr class="separator:a01ae65c0a0736d4293e657a66bde1538"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5b99ed49abd6b7bf13dafdd17bcef855"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> = int8x16_t</td></tr>
+<tr class="memdesc:a5b99ed49abd6b7bf13dafdd17bcef855"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point vector with 16 elements <a href="#a5b99ed49abd6b7bf13dafdd17bcef855">More...</a><br /></td></tr>
+<tr class="separator:a5b99ed49abd6b7bf13dafdd17bcef855"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a09108711e0c18d4e9811ea4597d573b1"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a09108711e0c18d4e9811ea4597d573b1">qint8x16x2_t</a> = int8x16x2_t</td></tr>
+<tr class="memdesc:a09108711e0c18d4e9811ea4597d573b1"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point vector with 32 elements <a href="#a09108711e0c18d4e9811ea4597d573b1">More...</a><br /></td></tr>
+<tr class="separator:a09108711e0c18d4e9811ea4597d573b1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7e175277ee7de6a5aeb5cd8916dbb346"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a7e175277ee7de6a5aeb5cd8916dbb346">qint8x16x3_t</a> = int8x16x3_t</td></tr>
+<tr class="memdesc:a7e175277ee7de6a5aeb5cd8916dbb346"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point vector with 48 elements <a href="#a7e175277ee7de6a5aeb5cd8916dbb346">More...</a><br /></td></tr>
+<tr class="separator:a7e175277ee7de6a5aeb5cd8916dbb346"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3c4b33603ffff71e9f02c4be1a2f14d5"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a3c4b33603ffff71e9f02c4be1a2f14d5">qint8x16x4_t</a> = int8x16x4_t</td></tr>
+<tr class="memdesc:a3c4b33603ffff71e9f02c4be1a2f14d5"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point vector with 64 elements <a href="#a3c4b33603ffff71e9f02c4be1a2f14d5">More...</a><br /></td></tr>
+<tr class="separator:a3c4b33603ffff71e9f02c4be1a2f14d5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a82c56f0856f56d430393e6a00baee983"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a82c56f0856f56d430393e6a00baee983">qint16x4_t</a> = int16x4_t</td></tr>
+<tr class="memdesc:a82c56f0856f56d430393e6a00baee983"><td class="mdescLeft"> </td><td class="mdescRight">16 bit fixed point vector with 4 elements <a href="#a82c56f0856f56d430393e6a00baee983">More...</a><br /></td></tr>
+<tr class="separator:a82c56f0856f56d430393e6a00baee983"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8d57e0f4f122442011213667168ef538"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a8d57e0f4f122442011213667168ef538">qint16x4x2_t</a> = int16x4x2_t</td></tr>
+<tr class="memdesc:a8d57e0f4f122442011213667168ef538"><td class="mdescLeft"> </td><td class="mdescRight">16 bit fixed point vector with 8 elements <a href="#a8d57e0f4f122442011213667168ef538">More...</a><br /></td></tr>
+<tr class="separator:a8d57e0f4f122442011213667168ef538"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a63f034ee885f20111e7f5d44e48e6d93"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a63f034ee885f20111e7f5d44e48e6d93">qint16x4x3_t</a> = int16x4x3_t</td></tr>
+<tr class="memdesc:a63f034ee885f20111e7f5d44e48e6d93"><td class="mdescLeft"> </td><td class="mdescRight">16 bit fixed point vector with 12 elements <a href="#a63f034ee885f20111e7f5d44e48e6d93">More...</a><br /></td></tr>
+<tr class="separator:a63f034ee885f20111e7f5d44e48e6d93"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8525b18a2f34c3497bbfbd0e7c3a7875"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a8525b18a2f34c3497bbfbd0e7c3a7875">qint16x4x4_t</a> = int16x4x4_t</td></tr>
+<tr class="memdesc:a8525b18a2f34c3497bbfbd0e7c3a7875"><td class="mdescLeft"> </td><td class="mdescRight">16 bit fixed point vector with 16 elements <a href="#a8525b18a2f34c3497bbfbd0e7c3a7875">More...</a><br /></td></tr>
+<tr class="separator:a8525b18a2f34c3497bbfbd0e7c3a7875"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4e15143176bfacdde8b06f4bb0b67427"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> = int16x8_t</td></tr>
+<tr class="memdesc:a4e15143176bfacdde8b06f4bb0b67427"><td class="mdescLeft"> </td><td class="mdescRight">16 bit fixed point vector with 8 elements <a href="#a4e15143176bfacdde8b06f4bb0b67427">More...</a><br /></td></tr>
+<tr class="separator:a4e15143176bfacdde8b06f4bb0b67427"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3c4099e91913f28017e1f57b8e5cbf9f"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a3c4099e91913f28017e1f57b8e5cbf9f">qint16x8x2_t</a> = int16x8x2_t</td></tr>
+<tr class="memdesc:a3c4099e91913f28017e1f57b8e5cbf9f"><td class="mdescLeft"> </td><td class="mdescRight">16 bit fixed point vector with 16 elements <a href="#a3c4099e91913f28017e1f57b8e5cbf9f">More...</a><br /></td></tr>
+<tr class="separator:a3c4099e91913f28017e1f57b8e5cbf9f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a65e109cf43ade8a2a3c57a1120b90b05"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a65e109cf43ade8a2a3c57a1120b90b05">qint16x8x3_t</a> = int16x8x3_t</td></tr>
+<tr class="memdesc:a65e109cf43ade8a2a3c57a1120b90b05"><td class="mdescLeft"> </td><td class="mdescRight">16 bit fixed point vector with 24 elements <a href="#a65e109cf43ade8a2a3c57a1120b90b05">More...</a><br /></td></tr>
+<tr class="separator:a65e109cf43ade8a2a3c57a1120b90b05"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6bc1e8d62f1055278d8f05454faa422f"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a6bc1e8d62f1055278d8f05454faa422f">qint16x8x4_t</a> = int16x8x4_t</td></tr>
+<tr class="memdesc:a6bc1e8d62f1055278d8f05454faa422f"><td class="mdescLeft"> </td><td class="mdescRight">16 bit fixed point vector with 32 elements <a href="#a6bc1e8d62f1055278d8f05454faa422f">More...</a><br /></td></tr>
+<tr class="separator:a6bc1e8d62f1055278d8f05454faa422f"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a4467b302fc9ec312c40580336ab783da"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a4467b302fc9ec312c40580336ab783da">PaddingSize</a> = <a class="el" href="structarm__compute_1_1_border_size.xhtml">BorderSize</a></td></tr>
<tr class="separator:a4467b302fc9ec312c40580336ab783da"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a2ab89a5d0959531aac270879cdd3ed78"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a2ab89a5d0959531aac270879cdd3ed78">InternalKeypoint</a> = std::tuple< float, float, float ></td></tr>
@@ -1478,13 +1671,26 @@
<tr class="separator:ae5a088552f26a1afafd0cbf821d256fb"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a681c120e2188371794ec3a59768c64ab"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a681c120e2188371794ec3a59768c64ab">LKInternalKeypointArray</a> = <a class="el" href="classarm__compute_1_1_array.xhtml">Array</a>< <a class="el" href="structarm__compute_1_1_n_e_l_k_internal_keypoint.xhtml">NELKInternalKeypoint</a> ></td></tr>
<tr class="separator:a681c120e2188371794ec3a59768c64ab"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9d037379f22f90d871d3fa4ad337437a"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a9d037379f22f90d871d3fa4ad337437a">NEScheduler</a> = <a class="el" href="classarm__compute_1_1_c_p_p_scheduler.xhtml">CPPScheduler</a></td></tr>
-<tr class="separator:a9d037379f22f90d871d3fa4ad337437a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0604c803e41880a4a16408efc4e6a69b"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a0604c803e41880a4a16408efc4e6a69b">NEScheduler</a> = <a class="el" href="classarm__compute_1_1_scheduler.xhtml">Scheduler</a></td></tr>
+<tr class="separator:a0604c803e41880a4a16408efc4e6a69b"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a7fb6a368d181ef193475f725c713430a"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a7fb6a368d181ef193475f725c713430a">Image</a> = <a class="el" href="classarm__compute_1_1_tensor.xhtml">Tensor</a></td></tr>
<tr class="separator:a7fb6a368d181ef193475f725c713430a"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
+<tr class="memitem:a735ac6c2a02e320969625308810444f3"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a735ac6c2a02e320969625308810444f3">GPUTarget</a> { <br />
+  <a class="el" href="namespacearm__compute.xhtml#a735ac6c2a02e320969625308810444f3a57a3b40730a5af7ea3e13eb4bba56d82">GPU_ARCH_MASK</a> = 0xF00,
+<a class="el" href="namespacearm__compute.xhtml#a735ac6c2a02e320969625308810444f3afa362f4daec88442a387ff7cda411a38">MIDGARD</a> = 0x100,
+<a class="el" href="namespacearm__compute.xhtml#a735ac6c2a02e320969625308810444f3aa78cc0fd1cab24af0fad71dc4c256f8e">BIFROST</a> = 0x200,
+<a class="el" href="namespacearm__compute.xhtml#a735ac6c2a02e320969625308810444f3a6855a4342969d2b58c96d95385d6e673">T600</a> = 0x110,
+<br />
+  <a class="el" href="namespacearm__compute.xhtml#a735ac6c2a02e320969625308810444f3a664a94fa85b127eabc7bed25091843fd">T700</a> = 0x120,
+<a class="el" href="namespacearm__compute.xhtml#a735ac6c2a02e320969625308810444f3aae926a8537ded0221329aa9a89b84048">T800</a> = 0x130,
+<a class="el" href="namespacearm__compute.xhtml#a735ac6c2a02e320969625308810444f3a0a91b0ff027767625b7d1a924e10c298">G70</a> = 0x210
+<br />
+ }<tr class="memdesc:a735ac6c2a02e320969625308810444f3"><td class="mdescLeft"> </td><td class="mdescRight">Available GPU Targets. <a href="namespacearm__compute.xhtml#a735ac6c2a02e320969625308810444f3">More...</a><br /></td></tr>
+</td></tr>
+<tr class="separator:a735ac6c2a02e320969625308810444f3"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ab4e88c89b3b7ea1735996cc4def22d58"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58">Format</a> { <br />
  <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a696b031073e74bf2cb98e5ef201d4aa3">UNKNOWN</a>,
<a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6669348b484e3008dca2bfa8e85e40b5">U8</a>,
@@ -1515,19 +1721,21 @@
  <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a696b031073e74bf2cb98e5ef201d4aa3">UNKNOWN</a>,
<a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a6669348b484e3008dca2bfa8e85e40b5">U8</a>,
<a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6aafb0fced528eaac5fe170b763cda5975">S8</a>,
-<a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6aef9ef3ebca4d2b64b6ec83808bafa5f2">U16</a>,
+<a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a11cde4d3551db3f9498d339a67189543">QS8</a>,
<br />
-  <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a6e0b0886efb94aec797f6b830329b72c">S16</a>,
+  <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6aef9ef3ebca4d2b64b6ec83808bafa5f2">U16</a>,
+<a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a6e0b0886efb94aec797f6b830329b72c">S16</a>,
+<a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a48d877702a2957f5a932c43a357866f9">QS16</a>,
<a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6ac8bd5bedff8ef192d39a962afc0e19ee">U32</a>,
-<a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6aa1e28eee0339658d39a8b4d325b56e9c">S32</a>,
+<br />
+  <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6aa1e28eee0339658d39a8b4d325b56e9c">S32</a>,
<a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a31d65cccd6593e4101db93fb878abcaa">U64</a>,
-<br />
-  <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a115dca124dc6423c7a400b8a8a0270cc">S64</a>,
+<a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a115dca124dc6423c7a400b8a8a0270cc">S64</a>,
<a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a56d8353718e6fdc78b8d69078a2cdb94">F16</a>,
-<a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a44ad4ef5a76e6aa6fb3e3fa079a54fda">F32</a>,
-<a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a1ad5f6f3069070ec4cbbdc94d5e61e0e">F64</a>,
<br />
-  <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6abd7ef6d4f35bc7d05c559b65032f15d1">SIZET</a>
+  <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a44ad4ef5a76e6aa6fb3e3fa079a54fda">F32</a>,
+<a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a1ad5f6f3069070ec4cbbdc94d5e61e0e">F64</a>,
+<a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6abd7ef6d4f35bc7d05c559b65032f15d1">SIZET</a>
<br />
}<tr class="memdesc:ad8ed01ff3ff33333d8e19db4d2818bb6"><td class="mdescLeft"> </td><td class="mdescRight">Available data types. <a href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">More...</a><br /></td></tr>
</td></tr>
@@ -1560,6 +1768,7 @@
</td></tr>
<tr class="separator:a3e6b23e675649b83240691abbc42a649"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:add6426cbf2e057a195846d4ba09a50be"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#add6426cbf2e057a195846d4ba09a50be">RoundingPolicy</a> { <a class="el" href="namespacearm__compute.xhtml#add6426cbf2e057a195846d4ba09a50bea5631ad8e27788edfca7e13535d862c06">TO_ZERO</a>,
+<a class="el" href="namespacearm__compute.xhtml#add6426cbf2e057a195846d4ba09a50bea8c0084566b290fa9e5e429f4ae241f95">TO_NEAREST_UP</a>,
<a class="el" href="namespacearm__compute.xhtml#add6426cbf2e057a195846d4ba09a50bea02ff1fff1812f84c89547fcd6c176150">TO_NEAREST_EVEN</a>
}<tr class="memdesc:add6426cbf2e057a195846d4ba09a50be"><td class="mdescLeft"> </td><td class="mdescRight">Rounding method. <a href="namespacearm__compute.xhtml#add6426cbf2e057a195846d4ba09a50be">More...</a><br /></td></tr>
</td></tr>
@@ -1612,15 +1821,15 @@
}<tr class="memdesc:adf2ced65e536375a1c96425d9fced858"><td class="mdescLeft"> </td><td class="mdescRight">Available non linear functions. <a href="namespacearm__compute.xhtml#adf2ced65e536375a1c96425d9fced858">More...</a><br /></td></tr>
</td></tr>
<tr class="separator:adf2ced65e536375a1c96425d9fced858"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad4bb8dabdbf8ad75e34220cc666b59ca"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ad4bb8dabdbf8ad75e34220cc666b59ca">NormType</a> { <a class="el" href="namespacearm__compute.xhtml#ad4bb8dabdbf8ad75e34220cc666b59caa531d6a3a92fd17afd3c7a8de8d5834c2">IN_MAP</a>,
+<tr class="memitem:ad4bb8dabdbf8ad75e34220cc666b59ca"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ad4bb8dabdbf8ad75e34220cc666b59ca">NormType</a> { <a class="el" href="namespacearm__compute.xhtml#ad4bb8dabdbf8ad75e34220cc666b59caaca2475ab7883ebb9f125241141896190">IN_MAP_1D</a>,
+<a class="el" href="namespacearm__compute.xhtml#ad4bb8dabdbf8ad75e34220cc666b59caa6ff8bd96743aae9fd283cd822b84278e">IN_MAP_2D</a>,
<a class="el" href="namespacearm__compute.xhtml#ad4bb8dabdbf8ad75e34220cc666b59caa980fef040549733973683b1a868f96e5">CROSS_MAP</a>
}<tr class="memdesc:ad4bb8dabdbf8ad75e34220cc666b59ca"><td class="mdescLeft"> </td><td class="mdescRight">The normalization type used for the normalization layer. <a href="namespacearm__compute.xhtml#ad4bb8dabdbf8ad75e34220cc666b59ca">More...</a><br /></td></tr>
</td></tr>
<tr class="separator:ad4bb8dabdbf8ad75e34220cc666b59ca"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a673665b4587a2956fcbad5f0e9ba89d3"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a673665b4587a2956fcbad5f0e9ba89d3">HOGNormType</a> { <a class="el" href="namespacearm__compute.xhtml#a673665b4587a2956fcbad5f0e9ba89d3a80485e54c7a3c93a0f74637c6b918ce5">L2_NORM</a>,
-<a class="el" href="namespacearm__compute.xhtml#a673665b4587a2956fcbad5f0e9ba89d3ac9e68c0594494ec85805b225a7acb9c2">L2HYS_NORM</a>,
-<a class="el" href="namespacearm__compute.xhtml#a673665b4587a2956fcbad5f0e9ba89d3a68616ae21712c00705b962f4eff06eaa">L1_NORM</a>,
-<a class="el" href="namespacearm__compute.xhtml#a673665b4587a2956fcbad5f0e9ba89d3a9b9f2c16d5d031b7057832d23906af52">L1SQRT_NORM</a>
+<tr class="memitem:a673665b4587a2956fcbad5f0e9ba89d3"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a673665b4587a2956fcbad5f0e9ba89d3">HOGNormType</a> { <a class="el" href="namespacearm__compute.xhtml#a673665b4587a2956fcbad5f0e9ba89d3a80485e54c7a3c93a0f74637c6b918ce5">L2_NORM</a> = 1,
+<a class="el" href="namespacearm__compute.xhtml#a673665b4587a2956fcbad5f0e9ba89d3ac9e68c0594494ec85805b225a7acb9c2">L2HYS_NORM</a> = 2,
+<a class="el" href="namespacearm__compute.xhtml#a673665b4587a2956fcbad5f0e9ba89d3a68616ae21712c00705b962f4eff06eaa">L1_NORM</a> = 3
}<tr class="memdesc:a673665b4587a2956fcbad5f0e9ba89d3"><td class="mdescLeft"> </td><td class="mdescRight">Normalization type for Histogram of Oriented Gradients (HOG) <a href="namespacearm__compute.xhtml#a673665b4587a2956fcbad5f0e9ba89d3">More...</a><br /></td></tr>
</td></tr>
<tr class="separator:a673665b4587a2956fcbad5f0e9ba89d3"><td class="memSeparator" colspan="2"> </td></tr>
@@ -1634,12 +1843,36 @@
}<tr class="memdesc:a9172da722f0a434e5cc07c0a3c115d93"><td class="mdescLeft"> </td><td class="mdescRight">Available pooling types. <a href="namespacearm__compute.xhtml#a9172da722f0a434e5cc07c0a3c115d93">More...</a><br /></td></tr>
</td></tr>
<tr class="separator:a9172da722f0a434e5cc07c0a3c115d93"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afa20b6a7f4383003babd690f026f22dc"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#afa20b6a7f4383003babd690f026f22dc">FixedPointOp</a> { <a class="el" href="namespacearm__compute.xhtml#afa20b6a7f4383003babd690f026f22dca8c670f8c37b95e1ed14a0ce414b049c7">EXP</a>,
+<a class="el" href="namespacearm__compute.xhtml#afa20b6a7f4383003babd690f026f22dca4b5ffcdaf38ce4d463171f5c977c5ab3">LOG</a>,
+<a class="el" href="namespacearm__compute.xhtml#afa20b6a7f4383003babd690f026f22dca59c58364795af22cad54630be156712b">INV_SQRT</a>,
+<a class="el" href="namespacearm__compute.xhtml#afa20b6a7f4383003babd690f026f22dca4d98346f3d5cc5fa5666f0715abf25b1">RECIPROCAL</a>
+ }<tr class="memdesc:afa20b6a7f4383003babd690f026f22dc"><td class="mdescLeft"> </td><td class="mdescRight">Fixed point operation. <a href="namespacearm__compute.xhtml#afa20b6a7f4383003babd690f026f22dc">More...</a><br /></td></tr>
+</td></tr>
+<tr class="separator:afa20b6a7f4383003babd690f026f22dc"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ab04905b0c6c0e4091160561eae870101"><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ab04905b0c6c0e4091160561eae870101">get_cl_type_from_data_type</a> (const <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> &dt)</td></tr>
<tr class="memdesc:ab04905b0c6c0e4091160561eae870101"><td class="mdescLeft"> </td><td class="mdescRight">Translates a tensor data type to the appropriate OpenCL type. <a href="#ab04905b0c6c0e4091160561eae870101">More...</a><br /></td></tr>
<tr class="separator:ab04905b0c6c0e4091160561eae870101"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afab814721e78cbfc34e7e7fe2874fa56"><td class="memItemLeft" align="right" valign="top">const std::string & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#afab814721e78cbfc34e7e7fe2874fa56">string_from_target</a> (<a class="el" href="namespacearm__compute.xhtml#a735ac6c2a02e320969625308810444f3">GPUTarget</a> target)</td></tr>
+<tr class="memdesc:afab814721e78cbfc34e7e7fe2874fa56"><td class="mdescLeft"> </td><td class="mdescRight">Translates a given gpu device target to string. <a href="#afab814721e78cbfc34e7e7fe2874fa56">More...</a><br /></td></tr>
+<tr class="separator:afab814721e78cbfc34e7e7fe2874fa56"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a35fb9d1dde1b976f4b7d361aabcc7c0d"><td class="memTemplParams" colspan="2">template<typename Kernel , typename... T> </td></tr>
+<tr class="memitem:a35fb9d1dde1b976f4b7d361aabcc7c0d"><td class="memTemplItemLeft" align="right" valign="top">std::unique_ptr< <a class="el" href="classarm__compute_1_1_kernel.xhtml">Kernel</a> > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a35fb9d1dde1b976f4b7d361aabcc7c0d">create_configure_kernel</a> (T &&...args)</td></tr>
+<tr class="memdesc:a35fb9d1dde1b976f4b7d361aabcc7c0d"><td class="mdescLeft"> </td><td class="mdescRight">Helper function to create and return a unique_ptr pointed to a CL kernel object It also calls the kernel's configuration. <a href="#a35fb9d1dde1b976f4b7d361aabcc7c0d">More...</a><br /></td></tr>
+<tr class="separator:a35fb9d1dde1b976f4b7d361aabcc7c0d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abc72c95941485d8a068fa38372308574"><td class="memTemplParams" colspan="2">template<typename Kernel > </td></tr>
+<tr class="memitem:abc72c95941485d8a068fa38372308574"><td class="memTemplItemLeft" align="right" valign="top">std::unique_ptr< <a class="el" href="classarm__compute_1_1_kernel.xhtml">Kernel</a> > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#abc72c95941485d8a068fa38372308574">create_kernel</a> ()</td></tr>
+<tr class="memdesc:abc72c95941485d8a068fa38372308574"><td class="mdescLeft"> </td><td class="mdescRight">Helper function to create and return a unique_ptr pointed to a CL kernel object. <a href="#abc72c95941485d8a068fa38372308574">More...</a><br /></td></tr>
+<tr class="separator:abc72c95941485d8a068fa38372308574"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9d0143bdde8255313aae6ac020dd629c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a735ac6c2a02e320969625308810444f3">GPUTarget</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a9d0143bdde8255313aae6ac020dd629c">get_target_from_device</a> (cl::Device &device)</td></tr>
+<tr class="memdesc:a9d0143bdde8255313aae6ac020dd629c"><td class="mdescLeft"> </td><td class="mdescRight">Helper function to get the GPU target from CL device. <a href="#a9d0143bdde8255313aae6ac020dd629c">More...</a><br /></td></tr>
+<tr class="separator:a9d0143bdde8255313aae6ac020dd629c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4a351d5c39dec88af98a671da1c43fd6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a735ac6c2a02e320969625308810444f3">GPUTarget</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a4a351d5c39dec88af98a671da1c43fd6">get_arch_from_target</a> (<a class="el" href="namespacearm__compute.xhtml#a735ac6c2a02e320969625308810444f3">GPUTarget</a> target)</td></tr>
+<tr class="memdesc:a4a351d5c39dec88af98a671da1c43fd6"><td class="mdescLeft"> </td><td class="mdescRight">Helper function to get the GPU arch. <a href="#a4a351d5c39dec88af98a671da1c43fd6">More...</a><br /></td></tr>
+<tr class="separator:a4a351d5c39dec88af98a671da1c43fd6"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a22af22ebac966b76e8553127064201a2"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a22af22ebac966b76e8553127064201a2">enqueue</a> (cl::CommandQueue &queue, <a class="el" href="classarm__compute_1_1_i_c_l_kernel.xhtml">ICLKernel</a> &kernel, const <a class="el" href="classarm__compute_1_1_window.xhtml">Window</a> &window, const cl::NDRange &lws_hint=cl::Range_128_1)</td></tr>
<tr class="memdesc:a22af22ebac966b76e8553127064201a2"><td class="mdescLeft"> </td><td class="mdescRight">Add the kernel to the command queue with the given window. <a href="#a22af22ebac966b76e8553127064201a2">More...</a><br /></td></tr>
<tr class="separator:a22af22ebac966b76e8553127064201a2"><td class="memSeparator" colspan="2"> </td></tr>
@@ -1648,32 +1881,149 @@
<tr class="memitem:a568b0fbfa3d903099d9c9f7b6acf188d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a568b0fbfa3d903099d9c9f7b6acf188d">error</a> (const char *function, const char *file, const int line, const char *msg,...)</td></tr>
<tr class="memdesc:a568b0fbfa3d903099d9c9f7b6acf188d"><td class="mdescLeft"> </td><td class="mdescRight">Print an error message then throw an std::runtime_error. <a href="#a568b0fbfa3d903099d9c9f7b6acf188d">More...</a><br /></td></tr>
<tr class="separator:a568b0fbfa3d903099d9c9f7b6acf188d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a78fd1c0056e9add7ab01b8e118c0038d"><td class="memTemplParams" colspan="2">template<typename L , typename... Ts> </td></tr>
-<tr class="memitem:a78fd1c0056e9add7ab01b8e118c0038d"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">execute_window_loop</a> (const <a class="el" href="classarm__compute_1_1_window.xhtml">Window</a> &w, L &&lambda_function, Ts &&...iterators)</td></tr>
-<tr class="memdesc:a78fd1c0056e9add7ab01b8e118c0038d"><td class="mdescLeft"> </td><td class="mdescRight">Iterate through the passed window, automatically adjusting the iterators and calling the lambda_functino for each element. <a href="#a78fd1c0056e9add7ab01b8e118c0038d">More...</a><br /></td></tr>
-<tr class="separator:a78fd1c0056e9add7ab01b8e118c0038d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5930b66fce0674d707fbf4f2dfcacc8f"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a5930b66fce0674d707fbf4f2dfcacc8f">debug</a> (const char *function, const char *file, const int line, const char *msg,...)</td></tr>
+<tr class="memdesc:a5930b66fce0674d707fbf4f2dfcacc8f"><td class="mdescLeft"> </td><td class="mdescRight">Print a debug message. <a href="#a5930b66fce0674d707fbf4f2dfcacc8f">More...</a><br /></td></tr>
+<tr class="separator:a5930b66fce0674d707fbf4f2dfcacc8f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a203882febb616f5468d1b63b60ffb331"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a203882febb616f5468d1b63b60ffb331">sqshl_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> a, int shift)</td></tr>
+<tr class="memdesc:a203882febb616f5468d1b63b60ffb331"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point scalar saturating shift left <a href="#a203882febb616f5468d1b63b60ffb331">More...</a><br /></td></tr>
+<tr class="separator:a203882febb616f5468d1b63b60ffb331"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a43315c66c4d00207f70143233b189085"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a43315c66c4d00207f70143233b189085">sabs_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> a)</td></tr>
+<tr class="memdesc:a43315c66c4d00207f70143233b189085"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point scalar absolute value <a href="#a43315c66c4d00207f70143233b189085">More...</a><br /></td></tr>
+<tr class="separator:a43315c66c4d00207f70143233b189085"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa8cee074ec68e2ae7830a9472efd8429"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#aa8cee074ec68e2ae7830a9472efd8429">sadd_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> b)</td></tr>
+<tr class="memdesc:aa8cee074ec68e2ae7830a9472efd8429"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point scalar add <a href="#aa8cee074ec68e2ae7830a9472efd8429">More...</a><br /></td></tr>
+<tr class="separator:aa8cee074ec68e2ae7830a9472efd8429"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a532d90e007d0cb6f3d43107229c40c32"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a532d90e007d0cb6f3d43107229c40c32">sqadd_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> b)</td></tr>
+<tr class="memdesc:a532d90e007d0cb6f3d43107229c40c32"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point scalar saturating add <a href="#a532d90e007d0cb6f3d43107229c40c32">More...</a><br /></td></tr>
+<tr class="separator:a532d90e007d0cb6f3d43107229c40c32"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a45669fcc0f31fce521179510e85dcb62"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a45669fcc0f31fce521179510e85dcb62">sqadd_qs16</a> (<a class="el" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> b)</td></tr>
+<tr class="memdesc:a45669fcc0f31fce521179510e85dcb62"><td class="mdescLeft"> </td><td class="mdescRight">16 bit fixed point scalar saturating add <a href="#a45669fcc0f31fce521179510e85dcb62">More...</a><br /></td></tr>
+<tr class="separator:a45669fcc0f31fce521179510e85dcb62"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab97841950d268532e51f28a208ddafd4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ab97841950d268532e51f28a208ddafd4">ssub_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> b)</td></tr>
+<tr class="memdesc:ab97841950d268532e51f28a208ddafd4"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point scalar subtraction <a href="#ab97841950d268532e51f28a208ddafd4">More...</a><br /></td></tr>
+<tr class="separator:ab97841950d268532e51f28a208ddafd4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae74bbb6e25cc1b774428722b2faad00c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ae74bbb6e25cc1b774428722b2faad00c">sqsub_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> b)</td></tr>
+<tr class="memdesc:ae74bbb6e25cc1b774428722b2faad00c"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point scalar saturating subtraction <a href="#ae74bbb6e25cc1b774428722b2faad00c">More...</a><br /></td></tr>
+<tr class="separator:ae74bbb6e25cc1b774428722b2faad00c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aec48f137adc904d648dd7eba0d828fab"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#aec48f137adc904d648dd7eba0d828fab">smul_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> b, int fixed_point_position)</td></tr>
+<tr class="memdesc:aec48f137adc904d648dd7eba0d828fab"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point scalar multiply <a href="#aec48f137adc904d648dd7eba0d828fab">More...</a><br /></td></tr>
+<tr class="separator:aec48f137adc904d648dd7eba0d828fab"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af0b73b0c4980a551d7cd4edec43ffd92"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#af0b73b0c4980a551d7cd4edec43ffd92">sqmul_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> b, int fixed_point_position)</td></tr>
+<tr class="memdesc:af0b73b0c4980a551d7cd4edec43ffd92"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point scalar saturating multiply <a href="#af0b73b0c4980a551d7cd4edec43ffd92">More...</a><br /></td></tr>
+<tr class="separator:af0b73b0c4980a551d7cd4edec43ffd92"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0721e062e6d7a90f07fd08aeda5e7eda"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a0721e062e6d7a90f07fd08aeda5e7eda">sqmull_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> b, int fixed_point_position)</td></tr>
+<tr class="memdesc:a0721e062e6d7a90f07fd08aeda5e7eda"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point scalar multiply long <a href="#a0721e062e6d7a90f07fd08aeda5e7eda">More...</a><br /></td></tr>
+<tr class="separator:a0721e062e6d7a90f07fd08aeda5e7eda"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a55c8a365b4242664f8c0f19e91bcee92"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a55c8a365b4242664f8c0f19e91bcee92">sqmul_qs16</a> (<a class="el" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> b, int fixed_point_position)</td></tr>
+<tr class="memdesc:a55c8a365b4242664f8c0f19e91bcee92"><td class="mdescLeft"> </td><td class="mdescRight">16 bit fixed point scalar saturating multiply <a href="#a55c8a365b4242664f8c0f19e91bcee92">More...</a><br /></td></tr>
+<tr class="separator:a55c8a365b4242664f8c0f19e91bcee92"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab768d7001612a149c0bf695b773d659b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ab768d7001612a149c0bf695b773d659b">sinvsqrt_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> a, int fixed_point_position)</td></tr>
+<tr class="memdesc:ab768d7001612a149c0bf695b773d659b"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point scalar inverse square root <a href="#ab768d7001612a149c0bf695b773d659b">More...</a><br /></td></tr>
+<tr class="separator:ab768d7001612a149c0bf695b773d659b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae39636f0e83dd3b854b89181a230216f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ae39636f0e83dd3b854b89181a230216f">sdiv_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> b, int fixed_point_position)</td></tr>
+<tr class="memdesc:ae39636f0e83dd3b854b89181a230216f"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point scalar division <a href="#ae39636f0e83dd3b854b89181a230216f">More...</a><br /></td></tr>
+<tr class="separator:ae39636f0e83dd3b854b89181a230216f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a31f807a33c1ad8f1b92f6bdf8f8e960a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a31f807a33c1ad8f1b92f6bdf8f8e960a">sexp_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> a, int fixed_point_position)</td></tr>
+<tr class="memdesc:a31f807a33c1ad8f1b92f6bdf8f8e960a"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point scalar exponential <a href="#a31f807a33c1ad8f1b92f6bdf8f8e960a">More...</a><br /></td></tr>
+<tr class="separator:a31f807a33c1ad8f1b92f6bdf8f8e960a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a596a7e3c63f80e67ea7cb713e8fc9992"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a596a7e3c63f80e67ea7cb713e8fc9992">slog_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> a, int fixed_point_position)</td></tr>
+<tr class="memdesc:a596a7e3c63f80e67ea7cb713e8fc9992"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point scalar logarithm <a href="#a596a7e3c63f80e67ea7cb713e8fc9992">More...</a><br /></td></tr>
+<tr class="separator:a596a7e3c63f80e67ea7cb713e8fc9992"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a62232512d049619479b670c58a607924"><td class="memItemLeft" align="right" valign="top">float </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a62232512d049619479b670c58a607924">scvt_f32_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> a, int fixed_point_position)</td></tr>
+<tr class="memdesc:a62232512d049619479b670c58a607924"><td class="mdescLeft"> </td><td class="mdescRight">Convert an 8 bit fixed point to float. <a href="#a62232512d049619479b670c58a607924">More...</a><br /></td></tr>
+<tr class="separator:a62232512d049619479b670c58a607924"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a85574c36b0854c1f988a3be4f7db6b6d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a85574c36b0854c1f988a3be4f7db6b6d">scvt_qs8_f32</a> (float a, int fixed_point_position)</td></tr>
+<tr class="memdesc:a85574c36b0854c1f988a3be4f7db6b6d"><td class="mdescLeft"> </td><td class="mdescRight">Convert a float to 8 bit fixed point. <a href="#a85574c36b0854c1f988a3be4f7db6b6d">More...</a><br /></td></tr>
+<tr class="separator:a85574c36b0854c1f988a3be4f7db6b6d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a55e8e161b9a16d750a6cff3fba6cd480"><td class="memItemLeft" align="right" valign="top">float </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a55e8e161b9a16d750a6cff3fba6cd480">scvt_f32_qs16</a> (<a class="el" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> a, int fixed_point_position)</td></tr>
+<tr class="memdesc:a55e8e161b9a16d750a6cff3fba6cd480"><td class="mdescLeft"> </td><td class="mdescRight">Convert a 16 bit fixed point to float. <a href="#a55e8e161b9a16d750a6cff3fba6cd480">More...</a><br /></td></tr>
+<tr class="separator:a55e8e161b9a16d750a6cff3fba6cd480"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aacd9632313e7c7341b403155575a48ed"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#aacd9632313e7c7341b403155575a48ed">scvt_qs16_f32</a> (float a, int fixed_point_position)</td></tr>
+<tr class="memdesc:aacd9632313e7c7341b403155575a48ed"><td class="mdescLeft"> </td><td class="mdescRight">Convert a float to 16 bit fixed point. <a href="#aacd9632313e7c7341b403155575a48ed">More...</a><br /></td></tr>
+<tr class="separator:aacd9632313e7c7341b403155575a48ed"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad555b251940cba2ca1c6eb168f0bbea4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ad555b251940cba2ca1c6eb168f0bbea4">sqmovn_qs16</a> (<a class="el" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> a)</td></tr>
+<tr class="memdesc:ad555b251940cba2ca1c6eb168f0bbea4"><td class="mdescLeft"> </td><td class="mdescRight">Scalar saturating move and narrow. <a href="#ad555b251940cba2ca1c6eb168f0bbea4">More...</a><br /></td></tr>
+<tr class="separator:ad555b251940cba2ca1c6eb168f0bbea4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6458ccaf13f1c225d6b60672754f2c72"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a6458ccaf13f1c225d6b60672754f2c72">sqexp_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> a, int fixed_point_position)</td></tr>
+<tr class="separator:a6458ccaf13f1c225d6b60672754f2c72"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:adfe7525e3cd542da6c043a98f93a8d3c"><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
+<tr class="memitem:adfe7525e3cd542da6c043a98f93a8d3c"><td class="memTemplItemLeft" align="right" valign="top">std::enable_if< <a class="el" href="structarm__compute_1_1enable__bitwise__ops.xhtml">enable_bitwise_ops</a>< T >::value, T >::type </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#adfe7525e3cd542da6c043a98f93a8d3c">operator&</a> (T lhs, T rhs)</td></tr>
+<tr class="separator:adfe7525e3cd542da6c043a98f93a8d3c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aceaaf77291e83ca0dfaed677c93ce350"><td class="memItemLeft" align="right" valign="top">uint8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#aceaaf77291e83ca0dfaed677c93ce350">delta_bilinear_c1u8</a> (const uint8_t *pixel_ptr, size_t stride, float dx, float dy)</td></tr>
+<tr class="memdesc:aceaaf77291e83ca0dfaed677c93ce350"><td class="mdescLeft"> </td><td class="mdescRight">Computes bilinear interpolation using the pointer to the top-left pixel and the pixel's distance between the real coordinates and the smallest following integer coordinates. <a href="#aceaaf77291e83ca0dfaed677c93ce350">More...</a><br /></td></tr>
+<tr class="separator:aceaaf77291e83ca0dfaed677c93ce350"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a49560b7b7e0095fd7501b0a6d7042f2b"><td class="memItemLeft" align="right" valign="top">uint8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a49560b7b7e0095fd7501b0a6d7042f2b">pixel_bilinear_c1u8</a> (const uint8_t *first_pixel_ptr, size_t stride, float x, float y)</td></tr>
+<tr class="memdesc:a49560b7b7e0095fd7501b0a6d7042f2b"><td class="mdescLeft"> </td><td class="mdescRight">Return the pixel at (x,y) using bilinear interpolation. <a href="#a49560b7b7e0095fd7501b0a6d7042f2b">More...</a><br /></td></tr>
+<tr class="separator:a49560b7b7e0095fd7501b0a6d7042f2b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7c3fa3051dcd3570157d121b6cb0e56a"><td class="memItemLeft" align="right" valign="top">uint8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a7c3fa3051dcd3570157d121b6cb0e56a">pixel_bilinear_c1u8_clamp</a> (const uint8_t *first_pixel_ptr, size_t stride, size_t width, size_t height, float x, float y)</td></tr>
+<tr class="memdesc:a7c3fa3051dcd3570157d121b6cb0e56a"><td class="mdescLeft"> </td><td class="mdescRight">Return the pixel at (x,y) using bilinear interpolation by clamping when out of borders. <a href="#a7c3fa3051dcd3570157d121b6cb0e56a">More...</a><br /></td></tr>
+<tr class="separator:a7c3fa3051dcd3570157d121b6cb0e56a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab7b3af731907e85fcaf72555c446176b"><td class="memItemLeft" align="right" valign="top">uint8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ab7b3af731907e85fcaf72555c446176b">pixel_area_c1u8_clamp</a> (const uint8_t *first_pixel_ptr, size_t stride, size_t width, size_t height, float wr, float hr, int x, int y)</td></tr>
+<tr class="memdesc:ab7b3af731907e85fcaf72555c446176b"><td class="mdescLeft"> </td><td class="mdescRight">Return the pixel at (x,y) using area interpolation by clamping when out of borders. <a href="#ab7b3af731907e85fcaf72555c446176b">More...</a><br /></td></tr>
+<tr class="separator:ab7b3af731907e85fcaf72555c446176b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1c0b9414fe3a6ef6a7a23bd324ae9e67"><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
+<tr class="memitem:a1c0b9414fe3a6ef6a7a23bd324ae9e67"><td class="memTemplItemLeft" align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a1c0b9414fe3a6ef6a7a23bd324ae9e67">clamp</a> (const T &n, const T &lower, const T &upper)</td></tr>
+<tr class="memdesc:a1c0b9414fe3a6ef6a7a23bd324ae9e67"><td class="mdescLeft"> </td><td class="mdescRight">Performs clamping among a lower and upper value. <a href="#a1c0b9414fe3a6ef6a7a23bd324ae9e67">More...</a><br /></td></tr>
+<tr class="separator:a1c0b9414fe3a6ef6a7a23bd324ae9e67"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a76e58198af8e930a851637e7e3eccbd2"><td class="memTemplParams" colspan="2">template<typename F > </td></tr>
+<tr class="memitem:a76e58198af8e930a851637e7e3eccbd2"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a76e58198af8e930a851637e7e3eccbd2">for_each</a> (F &&)</td></tr>
+<tr class="memdesc:a76e58198af8e930a851637e7e3eccbd2"><td class="mdescLeft"> </td><td class="mdescRight">Base case of for_each. <a href="#a76e58198af8e930a851637e7e3eccbd2">More...</a><br /></td></tr>
+<tr class="separator:a76e58198af8e930a851637e7e3eccbd2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab951ff3c9484cd4b243344b3a0f12d95"><td class="memTemplParams" colspan="2">template<typename F , typename T , typename... Ts> </td></tr>
+<tr class="memitem:ab951ff3c9484cd4b243344b3a0f12d95"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ab951ff3c9484cd4b243344b3a0f12d95">for_each</a> (F &&func, T &&arg, Ts &&...args)</td></tr>
+<tr class="memdesc:ab951ff3c9484cd4b243344b3a0f12d95"><td class="mdescLeft"> </td><td class="mdescRight">Call the function for each of the arguments. <a href="#ab951ff3c9484cd4b243344b3a0f12d95">More...</a><br /></td></tr>
+<tr class="separator:ab951ff3c9484cd4b243344b3a0f12d95"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6905c41fd996c479e46791ef58e440aa"><td class="memTemplParams" colspan="2">template<typename F , typename T > </td></tr>
+<tr class="memitem:a6905c41fd996c479e46791ef58e440aa"><td class="memTemplItemLeft" align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a6905c41fd996c479e46791ef58e440aa">foldl</a> (F &&, const T &value)</td></tr>
+<tr class="memdesc:a6905c41fd996c479e46791ef58e440aa"><td class="mdescLeft"> </td><td class="mdescRight">Base case of foldl. <a href="#a6905c41fd996c479e46791ef58e440aa">More...</a><br /></td></tr>
+<tr class="separator:a6905c41fd996c479e46791ef58e440aa"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7f8e5c5fc77465cf3ac58b3d15305a5f"><td class="memTemplParams" colspan="2">template<typename F , typename T , typename U > </td></tr>
+<tr class="memitem:a7f8e5c5fc77465cf3ac58b3d15305a5f"><td class="memTemplItemLeft" align="right" valign="top">auto </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a7f8e5c5fc77465cf3ac58b3d15305a5f">foldl</a> (F &&func, T &&value1, U &&value2) -> decltype(func(value1, value2))</td></tr>
+<tr class="memdesc:a7f8e5c5fc77465cf3ac58b3d15305a5f"><td class="mdescLeft"> </td><td class="mdescRight">Base case of foldl. <a href="#a7f8e5c5fc77465cf3ac58b3d15305a5f">More...</a><br /></td></tr>
+<tr class="separator:a7f8e5c5fc77465cf3ac58b3d15305a5f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a05d0de315da2ecf1fa7d22ffad49b254"><td class="memTemplParams" colspan="2">template<typename F , typename I , typename T , typename... Vs> </td></tr>
+<tr class="memitem:a05d0de315da2ecf1fa7d22ffad49b254"><td class="memTemplItemLeft" align="right" valign="top">I </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a05d0de315da2ecf1fa7d22ffad49b254">foldl</a> (F &&func, I &&initial, T &&value, Vs &&...values)</td></tr>
+<tr class="memdesc:a05d0de315da2ecf1fa7d22ffad49b254"><td class="mdescLeft"> </td><td class="mdescRight">Fold left. <a href="#a05d0de315da2ecf1fa7d22ffad49b254">More...</a><br /></td></tr>
+<tr class="separator:a05d0de315da2ecf1fa7d22ffad49b254"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6c0dcc38187027dcb89cd9724bc5a823"><td class="memTemplParams" colspan="2">template<typename L , typename... Ts> </td></tr>
+<tr class="memitem:a6c0dcc38187027dcb89cd9724bc5a823"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a6c0dcc38187027dcb89cd9724bc5a823">execute_window_loop</a> (const <a class="el" href="classarm__compute_1_1_window.xhtml">Window</a> &w, L &&lambda_function, Ts &&...iterators)</td></tr>
+<tr class="memdesc:a6c0dcc38187027dcb89cd9724bc5a823"><td class="mdescLeft"> </td><td class="mdescRight">Iterate through the passed window, automatically adjusting the iterators and calling the lambda_functino for each element. <a href="#a6c0dcc38187027dcb89cd9724bc5a823">More...</a><br /></td></tr>
+<tr class="separator:a6c0dcc38187027dcb89cd9724bc5a823"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ac2a92cae51d2734a65676052adb33c22"><td class="memTemplParams" colspan="2">template<typename... Ts> </td></tr>
<tr class="memitem:ac2a92cae51d2734a65676052adb33c22"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ac2a92cae51d2734a65676052adb33c22">update_window_and_padding</a> (<a class="el" href="classarm__compute_1_1_window.xhtml">Window</a> &win, Ts &&...patterns)</td></tr>
<tr class="memdesc:ac2a92cae51d2734a65676052adb33c22"><td class="mdescLeft"> </td><td class="mdescRight">Update window and padding size for each of the access patterns. <a href="#ac2a92cae51d2734a65676052adb33c22">More...</a><br /></td></tr>
<tr class="separator:ac2a92cae51d2734a65676052adb33c22"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa8063930734453501dbe41f60c5a89d9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1_window.xhtml">Window</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#aa8063930734453501dbe41f60c5a89d9">calculate_max_window</a> (const <a class="el" href="classarm__compute_1_1_tensor_info.xhtml">TensorInfo</a> &info, const <a class="el" href="classarm__compute_1_1_steps.xhtml">Steps</a> &steps=<a class="el" href="classarm__compute_1_1_steps.xhtml">Steps</a>(), bool skip_border=false, <a class="el" href="structarm__compute_1_1_border_size.xhtml">BorderSize</a> border_size=<a class="el" href="structarm__compute_1_1_border_size.xhtml">BorderSize</a>())</td></tr>
-<tr class="memdesc:aa8063930734453501dbe41f60c5a89d9"><td class="mdescLeft"> </td><td class="mdescRight">Calculate the maximum window for a given tensor shape and border setting. <a href="#aa8063930734453501dbe41f60c5a89d9">More...</a><br /></td></tr>
-<tr class="separator:aa8063930734453501dbe41f60c5a89d9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0451630695335182319ee53d785d0715"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1_window.xhtml">Window</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a0451630695335182319ee53d785d0715">calculate_max_window_horizontal</a> (const <a class="el" href="classarm__compute_1_1_tensor_info.xhtml">TensorInfo</a> &info, const <a class="el" href="classarm__compute_1_1_steps.xhtml">Steps</a> &steps=<a class="el" href="classarm__compute_1_1_steps.xhtml">Steps</a>(), bool skip_border=false, <a class="el" href="structarm__compute_1_1_border_size.xhtml">BorderSize</a> border_size=<a class="el" href="structarm__compute_1_1_border_size.xhtml">BorderSize</a>())</td></tr>
-<tr class="memdesc:a0451630695335182319ee53d785d0715"><td class="mdescLeft"> </td><td class="mdescRight">Calculate the maximum window used by a horizontal kernel for a given tensor shape and border setting. <a href="#a0451630695335182319ee53d785d0715">More...</a><br /></td></tr>
-<tr class="separator:a0451630695335182319ee53d785d0715"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa2117aef4381edbdf81e17ec088df7f1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1_window.xhtml">Window</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#aa2117aef4381edbdf81e17ec088df7f1">calculate_max_window</a> (const <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml">ITensorInfo</a> &info, const <a class="el" href="classarm__compute_1_1_steps.xhtml">Steps</a> &steps=<a class="el" href="classarm__compute_1_1_steps.xhtml">Steps</a>(), bool skip_border=false, <a class="el" href="structarm__compute_1_1_border_size.xhtml">BorderSize</a> border_size=<a class="el" href="structarm__compute_1_1_border_size.xhtml">BorderSize</a>())</td></tr>
+<tr class="memdesc:aa2117aef4381edbdf81e17ec088df7f1"><td class="mdescLeft"> </td><td class="mdescRight">Calculate the maximum window for a given tensor shape and border setting. <a href="#aa2117aef4381edbdf81e17ec088df7f1">More...</a><br /></td></tr>
+<tr class="separator:aa2117aef4381edbdf81e17ec088df7f1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a47456b4d520aee1cba80bf6e20f6685a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1_window.xhtml">Window</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a47456b4d520aee1cba80bf6e20f6685a">calculate_max_window_horizontal</a> (const <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml">ITensorInfo</a> &info, const <a class="el" href="classarm__compute_1_1_steps.xhtml">Steps</a> &steps=<a class="el" href="classarm__compute_1_1_steps.xhtml">Steps</a>(), bool skip_border=false, <a class="el" href="structarm__compute_1_1_border_size.xhtml">BorderSize</a> border_size=<a class="el" href="structarm__compute_1_1_border_size.xhtml">BorderSize</a>())</td></tr>
+<tr class="memdesc:a47456b4d520aee1cba80bf6e20f6685a"><td class="mdescLeft"> </td><td class="mdescRight">Calculate the maximum window used by a horizontal kernel for a given tensor shape and border setting. <a href="#a47456b4d520aee1cba80bf6e20f6685a">More...</a><br /></td></tr>
+<tr class="separator:a47456b4d520aee1cba80bf6e20f6685a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afcdda83b6a85d5798f08d92c0e235e2e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1_window.xhtml">Window</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#afcdda83b6a85d5798f08d92c0e235e2e">calculate_max_enlarged_window</a> (const <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml">ITensorInfo</a> &info, const <a class="el" href="classarm__compute_1_1_steps.xhtml">Steps</a> &steps=<a class="el" href="classarm__compute_1_1_steps.xhtml">Steps</a>(), <a class="el" href="structarm__compute_1_1_border_size.xhtml">BorderSize</a> border_size=<a class="el" href="structarm__compute_1_1_border_size.xhtml">BorderSize</a>())</td></tr>
+<tr class="memdesc:afcdda83b6a85d5798f08d92c0e235e2e"><td class="mdescLeft"> </td><td class="mdescRight">Calculate the maximum window for a given tensor shape and border setting. <a href="#afcdda83b6a85d5798f08d92c0e235e2e">More...</a><br /></td></tr>
+<tr class="separator:afcdda83b6a85d5798f08d92c0e235e2e"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a3bb1b3d01f14dbc0beb1e826eefeddc6"><td class="memTemplParams" colspan="2">template<typename... Ts> </td></tr>
<tr class="memitem:a3bb1b3d01f14dbc0beb1e826eefeddc6"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="structarm__compute_1_1_valid_region.xhtml">ValidRegion</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a3bb1b3d01f14dbc0beb1e826eefeddc6">intersect_valid_regions</a> (Ts &&...regions)</td></tr>
<tr class="memdesc:a3bb1b3d01f14dbc0beb1e826eefeddc6"><td class="mdescLeft"> </td><td class="mdescRight">Intersect multiple valid regions. <a href="#a3bb1b3d01f14dbc0beb1e826eefeddc6">More...</a><br /></td></tr>
<tr class="separator:a3bb1b3d01f14dbc0beb1e826eefeddc6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aedfc72aa9d25b8918734bd374421ee32"><td class="memTemplParams" colspan="2">template<typename T , typename... Ts> </td></tr>
-<tr class="memitem:aedfc72aa9d25b8918734bd374421ee32"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1_strides.xhtml">Strides</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#aedfc72aa9d25b8918734bd374421ee32">compute_strides</a> (const <a class="el" href="classarm__compute_1_1_tensor_info.xhtml">TensorInfo</a> &info, T stride_x, Ts &&...fixed_strides)</td></tr>
-<tr class="memdesc:aedfc72aa9d25b8918734bd374421ee32"><td class="mdescLeft"> </td><td class="mdescRight">Create a strides object based on the provided strides and the tensor dimensions. <a href="#aedfc72aa9d25b8918734bd374421ee32">More...</a><br /></td></tr>
-<tr class="separator:aedfc72aa9d25b8918734bd374421ee32"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a99bbb937f89cde6dfe346f566d41c707"><td class="memTemplParams" colspan="2">template<typename... Ts> </td></tr>
-<tr class="memitem:a99bbb937f89cde6dfe346f566d41c707"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1_strides.xhtml">Strides</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a99bbb937f89cde6dfe346f566d41c707">compute_strides</a> (const <a class="el" href="classarm__compute_1_1_tensor_info.xhtml">TensorInfo</a> &info)</td></tr>
-<tr class="memdesc:a99bbb937f89cde6dfe346f566d41c707"><td class="mdescLeft"> </td><td class="mdescRight">Create a strides object based on the tensor dimensions. <a href="#a99bbb937f89cde6dfe346f566d41c707">More...</a><br /></td></tr>
-<tr class="separator:a99bbb937f89cde6dfe346f566d41c707"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a35178800b82e07a49da5a81cdeda9a0c"><td class="memTemplParams" colspan="2">template<typename T , typename... Ts> </td></tr>
+<tr class="memitem:a35178800b82e07a49da5a81cdeda9a0c"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1_strides.xhtml">Strides</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a35178800b82e07a49da5a81cdeda9a0c">compute_strides</a> (const <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml">ITensorInfo</a> &info, T stride_x, Ts &&...fixed_strides)</td></tr>
+<tr class="memdesc:a35178800b82e07a49da5a81cdeda9a0c"><td class="mdescLeft"> </td><td class="mdescRight">Create a strides object based on the provided strides and the tensor dimensions. <a href="#a35178800b82e07a49da5a81cdeda9a0c">More...</a><br /></td></tr>
+<tr class="separator:a35178800b82e07a49da5a81cdeda9a0c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8c35748731709927597cb5a2c227e682"><td class="memTemplParams" colspan="2">template<typename... Ts> </td></tr>
+<tr class="memitem:a8c35748731709927597cb5a2c227e682"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1_strides.xhtml">Strides</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a8c35748731709927597cb5a2c227e682">compute_strides</a> (const <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml">ITensorInfo</a> &info)</td></tr>
+<tr class="memdesc:a8c35748731709927597cb5a2c227e682"><td class="mdescLeft"> </td><td class="mdescRight">Create a strides object based on the tensor dimensions. <a href="#a8c35748731709927597cb5a2c227e682">More...</a><br /></td></tr>
+<tr class="separator:a8c35748731709927597cb5a2c227e682"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1c9627ac3d73a67e9312c2c9740ff0a3"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a1c9627ac3d73a67e9312c2c9740ff0a3">auto_init_if_empty</a> (<a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml">ITensorInfo</a> &info, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &shape, int num_channels, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> data_type, int fixed_point_position)</td></tr>
+<tr class="separator:a1c9627ac3d73a67e9312c2c9740ff0a3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9d1a839c51134b2ae171a2264c541b6f"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a9d1a839c51134b2ae171a2264c541b6f">set_shape_if_empty</a> (<a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml">ITensorInfo</a> &info, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &shape)</td></tr>
+<tr class="separator:a9d1a839c51134b2ae171a2264c541b6f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8076ba239b6681067b6cfea7f773a39f"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a8076ba239b6681067b6cfea7f773a39f">set_format_if_unknown</a> (<a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml">ITensorInfo</a> &info, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58">Format</a> format)</td></tr>
+<tr class="separator:a8076ba239b6681067b6cfea7f773a39f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad19446be52c2c162fa678b9ae236f445"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ad19446be52c2c162fa678b9ae236f445">set_data_type_if_unknown</a> (<a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml">ITensorInfo</a> &info, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> data_type)</td></tr>
+<tr class="separator:ad19446be52c2c162fa678b9ae236f445"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0894ed18ca6f55d6053882676cc2c95c"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a0894ed18ca6f55d6053882676cc2c95c">set_fixed_point_position_if_zero</a> (<a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml">ITensorInfo</a> &info, int fixed_point_position)</td></tr>
+<tr class="separator:a0894ed18ca6f55d6053882676cc2c95c"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a41c1523098580451b378f76b8c37a0f0"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a41c1523098580451b378f76b8c37a0f0">adjust_down</a> (int required, int available, int step)</td></tr>
<tr class="memdesc:a41c1523098580451b378f76b8c37a0f0"><td class="mdescLeft"> </td><td class="mdescRight">Decrease <code>required</code> in steps of <code>step</code> until it's less than <code>available</code>. <a href="#a41c1523098580451b378f76b8c37a0f0">More...</a><br /></td></tr>
<tr class="separator:a41c1523098580451b378f76b8c37a0f0"><td class="memSeparator" colspan="2"> </td></tr>
@@ -1718,27 +2068,255 @@
<tr class="memitem:ad304c0b0a72ed3f65c24fa69ab3cd53e"><td class="memTemplParams" colspan="2">template<bool alpha> </td></tr>
<tr class="memitem:ad304c0b0a72ed3f65c24fa69ab3cd53e"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ad304c0b0a72ed3f65c24fa69ab3cd53e">colorconvert_rgb_to_yuv4</a> (const void *__restrict input, void *__restrict output, const <a class="el" href="classarm__compute_1_1_window.xhtml">Window</a> &win)</td></tr>
<tr class="separator:ad304c0b0a72ed3f65c24fa69ab3cd53e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab8970d7aed07d8649f5e3088455948b8"><td class="memItemLeft" align="right" valign="top">float32x4_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ab8970d7aed07d8649f5e3088455948b8">vinvsqrtq_f32</a> (float32x4_t x)</td></tr>
-<tr class="memdesc:ab8970d7aed07d8649f5e3088455948b8"><td class="mdescLeft"> </td><td class="mdescRight">Calculate inverse square root. <a href="#ab8970d7aed07d8649f5e3088455948b8">More...</a><br /></td></tr>
-<tr class="separator:ab8970d7aed07d8649f5e3088455948b8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae1cdb8bbcb3f7ce5d3469f42f19d37a6"><td class="memItemLeft" align="right" valign="top">float32x4_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ae1cdb8bbcb3f7ce5d3469f42f19d37a6">vinvq_f32</a> (const float32x4_t &x)</td></tr>
-<tr class="memdesc:ae1cdb8bbcb3f7ce5d3469f42f19d37a6"><td class="mdescLeft"> </td><td class="mdescRight">Calculate reciprocal. <a href="#ae1cdb8bbcb3f7ce5d3469f42f19d37a6">More...</a><br /></td></tr>
-<tr class="separator:ae1cdb8bbcb3f7ce5d3469f42f19d37a6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac91f64208cebf2177a6be3a40ecebca8"><td class="memItemLeft" align="right" valign="top">float32x4_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ac91f64208cebf2177a6be3a40ecebca8">vtaylor_polyq_f32</a> (const float32x4_t &x, const std::array< float32x4_t, 8 > &coeffs)</td></tr>
-<tr class="memdesc:ac91f64208cebf2177a6be3a40ecebca8"><td class="mdescLeft"> </td><td class="mdescRight">Perform a 7th degree polynomial approximation using Estrin's method. <a href="#ac91f64208cebf2177a6be3a40ecebca8">More...</a><br /></td></tr>
-<tr class="separator:ac91f64208cebf2177a6be3a40ecebca8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa197f574e5effe492aa8034651467eb3"><td class="memItemLeft" align="right" valign="top">float32x4_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#aa197f574e5effe492aa8034651467eb3">vexpq_f32</a> (const float32x4_t &x)</td></tr>
-<tr class="memdesc:aa197f574e5effe492aa8034651467eb3"><td class="mdescLeft"> </td><td class="mdescRight">Calculate exponential. <a href="#aa197f574e5effe492aa8034651467eb3">More...</a><br /></td></tr>
-<tr class="separator:aa197f574e5effe492aa8034651467eb3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4082e6868f902da08483e54ec07484c8"><td class="memItemLeft" align="right" valign="top">float32x4_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a4082e6868f902da08483e54ec07484c8">vlogq_f32</a> (const float32x4_t &x)</td></tr>
-<tr class="memdesc:a4082e6868f902da08483e54ec07484c8"><td class="mdescLeft"> </td><td class="mdescRight">Calculate logarithm. <a href="#a4082e6868f902da08483e54ec07484c8">More...</a><br /></td></tr>
-<tr class="separator:a4082e6868f902da08483e54ec07484c8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9598330b2406691ce6580f7506e62168"><td class="memItemLeft" align="right" valign="top">float32x4_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a9598330b2406691ce6580f7506e62168">vtanhq_f32</a> (const float32x4_t &val)</td></tr>
-<tr class="memdesc:a9598330b2406691ce6580f7506e62168"><td class="mdescLeft"> </td><td class="mdescRight">Calculate hyperbolic tangent. <a href="#a9598330b2406691ce6580f7506e62168">More...</a><br /></td></tr>
-<tr class="separator:a9598330b2406691ce6580f7506e62168"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae0dbcd09c015bda4ab290b957d7bd6c7"><td class="memItemLeft" align="right" valign="top">float32x4_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ae0dbcd09c015bda4ab290b957d7bd6c7">vpowq_f32</a> (const float32x4_t &val, const float32x4_t &n)</td></tr>
-<tr class="memdesc:ae0dbcd09c015bda4ab290b957d7bd6c7"><td class="mdescLeft"> </td><td class="mdescRight">Calculate n power of a number. <a href="#ae0dbcd09c015bda4ab290b957d7bd6c7">More...</a><br /></td></tr>
-<tr class="separator:ae0dbcd09c015bda4ab290b957d7bd6c7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a85ff7d135f7aa13359bd575139ba14dd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a85ff7d135f7aa13359bd575139ba14dd">vget_low_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> a)</td></tr>
+<tr class="memdesc:a85ff7d135f7aa13359bd575139ba14dd"><td class="mdescLeft"> </td><td class="mdescRight">Get the lower half of a 16 elements vector. <a href="#a85ff7d135f7aa13359bd575139ba14dd">More...</a><br /></td></tr>
+<tr class="separator:a85ff7d135f7aa13359bd575139ba14dd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab93c92d0f3228809b6a4bfaa24eb4924"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ab93c92d0f3228809b6a4bfaa24eb4924">vget_high_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> a)</td></tr>
+<tr class="memdesc:ab93c92d0f3228809b6a4bfaa24eb4924"><td class="mdescLeft"> </td><td class="mdescRight">Get the higher half of a 16 elements vector. <a href="#ab93c92d0f3228809b6a4bfaa24eb4924">More...</a><br /></td></tr>
+<tr class="separator:ab93c92d0f3228809b6a4bfaa24eb4924"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a77ef79482edac98140bbdfaeffb78b8f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a77ef79482edac98140bbdfaeffb78b8f">vld1_qs8</a> (const <a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> *addr)</td></tr>
+<tr class="memdesc:a77ef79482edac98140bbdfaeffb78b8f"><td class="mdescLeft"> </td><td class="mdescRight">Load a single 8 bit fixed point vector from memory (8 elements) <a href="#a77ef79482edac98140bbdfaeffb78b8f">More...</a><br /></td></tr>
+<tr class="separator:a77ef79482edac98140bbdfaeffb78b8f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aba22755f7d41ffc62e23e5594751ecaa"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#aba22755f7d41ffc62e23e5594751ecaa">vld1q_qs8</a> (const <a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> *addr)</td></tr>
+<tr class="memdesc:aba22755f7d41ffc62e23e5594751ecaa"><td class="mdescLeft"> </td><td class="mdescRight">Load a single 8 bit fixed point vector from memory (16 elements) <a href="#aba22755f7d41ffc62e23e5594751ecaa">More...</a><br /></td></tr>
+<tr class="separator:aba22755f7d41ffc62e23e5594751ecaa"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1470ca9d692f773f33ddbd9b3a37f1f9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a82c56f0856f56d430393e6a00baee983">qint16x4_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a1470ca9d692f773f33ddbd9b3a37f1f9">vld1_qs16</a> (const <a class="el" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> *addr)</td></tr>
+<tr class="memdesc:a1470ca9d692f773f33ddbd9b3a37f1f9"><td class="mdescLeft"> </td><td class="mdescRight">Load a single 16 bit fixed point vector from memory (4 elements) <a href="#a1470ca9d692f773f33ddbd9b3a37f1f9">More...</a><br /></td></tr>
+<tr class="separator:a1470ca9d692f773f33ddbd9b3a37f1f9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aaa2cfaf59eb25ffb975bea87844e23c6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#aaa2cfaf59eb25ffb975bea87844e23c6">vld1q_qs16</a> (const <a class="el" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> *addr)</td></tr>
+<tr class="memdesc:aaa2cfaf59eb25ffb975bea87844e23c6"><td class="mdescLeft"> </td><td class="mdescRight">Load a single 16 bit fixed point vector from memory (8 elements) <a href="#aaa2cfaf59eb25ffb975bea87844e23c6">More...</a><br /></td></tr>
+<tr class="separator:aaa2cfaf59eb25ffb975bea87844e23c6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ada853a8e19c80626633d95392d2b4a8b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ada853a8e19c80626633d95392d2b4a8b">vld1_dup_qs8</a> (const <a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> *addr)</td></tr>
+<tr class="memdesc:ada853a8e19c80626633d95392d2b4a8b"><td class="mdescLeft"> </td><td class="mdescRight">Load all lanes of 8 bit fixed point vector with same value from memory (8 elements) <a href="#ada853a8e19c80626633d95392d2b4a8b">More...</a><br /></td></tr>
+<tr class="separator:ada853a8e19c80626633d95392d2b4a8b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad988b528a38525b8ceca56ed8d09c801"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ad988b528a38525b8ceca56ed8d09c801">vld1q_dup_qs8</a> (const <a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> *addr)</td></tr>
+<tr class="memdesc:ad988b528a38525b8ceca56ed8d09c801"><td class="mdescLeft"> </td><td class="mdescRight">Load all lanes of 8 bit fixed point vector with same value from memory (16 elements) <a href="#ad988b528a38525b8ceca56ed8d09c801">More...</a><br /></td></tr>
+<tr class="separator:ad988b528a38525b8ceca56ed8d09c801"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a509f3f9d910651d71d9f7dc3b5b3b92a"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a509f3f9d910651d71d9f7dc3b5b3b92a">vst1_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> *addr, <a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> b)</td></tr>
+<tr class="memdesc:a509f3f9d910651d71d9f7dc3b5b3b92a"><td class="mdescLeft"> </td><td class="mdescRight">Store a single 8 bit fixed point vector to memory (8 elements) <a href="#a509f3f9d910651d71d9f7dc3b5b3b92a">More...</a><br /></td></tr>
+<tr class="separator:a509f3f9d910651d71d9f7dc3b5b3b92a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acf4cb0bc89b25c5fac96935d040207f6"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#acf4cb0bc89b25c5fac96935d040207f6">vst1q_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> *addr, <a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> b)</td></tr>
+<tr class="memdesc:acf4cb0bc89b25c5fac96935d040207f6"><td class="mdescLeft"> </td><td class="mdescRight">Store a single 8 bit fixed point vector to memory (16 elements) <a href="#acf4cb0bc89b25c5fac96935d040207f6">More...</a><br /></td></tr>
+<tr class="separator:acf4cb0bc89b25c5fac96935d040207f6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1d54a1ef0078902b2334d2fddba74ca6"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a1d54a1ef0078902b2334d2fddba74ca6">vst1_qs16</a> (<a class="el" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> *addr, <a class="el" href="namespacearm__compute.xhtml#a82c56f0856f56d430393e6a00baee983">qint16x4_t</a> b)</td></tr>
+<tr class="memdesc:a1d54a1ef0078902b2334d2fddba74ca6"><td class="mdescLeft"> </td><td class="mdescRight">Store a single 16 bit fixed point vector to memory (4 elements) <a href="#a1d54a1ef0078902b2334d2fddba74ca6">More...</a><br /></td></tr>
+<tr class="separator:a1d54a1ef0078902b2334d2fddba74ca6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8bb5f297efd64b941f5022ea3cd7ee9a"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a8bb5f297efd64b941f5022ea3cd7ee9a">vst1q_qs16</a> (<a class="el" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> *addr, <a class="el" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> b)</td></tr>
+<tr class="memdesc:a8bb5f297efd64b941f5022ea3cd7ee9a"><td class="mdescLeft"> </td><td class="mdescRight">Store a single 8 bit fixed point vector to memory (16 elements) <a href="#a8bb5f297efd64b941f5022ea3cd7ee9a">More...</a><br /></td></tr>
+<tr class="separator:a8bb5f297efd64b941f5022ea3cd7ee9a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a92c2d0b9a8eeb3ab04a39a25fef2b6c3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a92c2d0b9a8eeb3ab04a39a25fef2b6c3">vqmovn_q16</a> (<a class="el" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> a)</td></tr>
+<tr class="memdesc:a92c2d0b9a8eeb3ab04a39a25fef2b6c3"><td class="mdescLeft"> </td><td class="mdescRight">16 bit fixed point vector saturating narrow (8 elements) <a href="#a92c2d0b9a8eeb3ab04a39a25fef2b6c3">More...</a><br /></td></tr>
+<tr class="separator:a92c2d0b9a8eeb3ab04a39a25fef2b6c3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1a226812e3cfdf3494adbdd92d4a1cb3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a1a226812e3cfdf3494adbdd92d4a1cb3">vdup_n_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> a)</td></tr>
+<tr class="memdesc:a1a226812e3cfdf3494adbdd92d4a1cb3"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point vector duplicate (8 elements) <a href="#a1a226812e3cfdf3494adbdd92d4a1cb3">More...</a><br /></td></tr>
+<tr class="separator:a1a226812e3cfdf3494adbdd92d4a1cb3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:adbd4df93ed00fcda54f91e669ea2be04"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#adbd4df93ed00fcda54f91e669ea2be04">vdupq_n_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> a)</td></tr>
+<tr class="memdesc:adbd4df93ed00fcda54f91e669ea2be04"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point vector duplicate (16 elements) <a href="#adbd4df93ed00fcda54f91e669ea2be04">More...</a><br /></td></tr>
+<tr class="separator:adbd4df93ed00fcda54f91e669ea2be04"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab20e66231de6c259952534de39214784"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ab20e66231de6c259952534de39214784">vdupq_n_qs8_f32</a> (float a, int fixed_point_position)</td></tr>
+<tr class="memdesc:ab20e66231de6c259952534de39214784"><td class="mdescLeft"> </td><td class="mdescRight">Duplicate a float and convert it to 8 bit fixed point vector (16 elements) <a href="#ab20e66231de6c259952534de39214784">More...</a><br /></td></tr>
+<tr class="separator:ab20e66231de6c259952534de39214784"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a740436aed8843612da747f40ff926875"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a740436aed8843612da747f40ff926875">vdupq_n_qs16</a> (<a class="el" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> a)</td></tr>
+<tr class="memdesc:a740436aed8843612da747f40ff926875"><td class="mdescLeft"> </td><td class="mdescRight">16 bit fixed point vector duplicate (8 elements) <a href="#a740436aed8843612da747f40ff926875">More...</a><br /></td></tr>
+<tr class="separator:a740436aed8843612da747f40ff926875"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab62f4e080614df358423180767cffefd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ab62f4e080614df358423180767cffefd">vabs_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> a)</td></tr>
+<tr class="memdesc:ab62f4e080614df358423180767cffefd"><td class="mdescLeft"> </td><td class="mdescRight">Absolute value of 8 bit fixed point vector (8 elements) <a href="#ab62f4e080614df358423180767cffefd">More...</a><br /></td></tr>
+<tr class="separator:ab62f4e080614df358423180767cffefd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3e4c45da2bef323158955d7c3b9d148d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a3e4c45da2bef323158955d7c3b9d148d">vabsq_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> a)</td></tr>
+<tr class="memdesc:a3e4c45da2bef323158955d7c3b9d148d"><td class="mdescLeft"> </td><td class="mdescRight">Absolute value of 8 bit fixed point vector (16 elements) <a href="#a3e4c45da2bef323158955d7c3b9d148d">More...</a><br /></td></tr>
+<tr class="separator:a3e4c45da2bef323158955d7c3b9d148d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4b2c9440d5fa4909ae909869877f39e3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a4b2c9440d5fa4909ae909869877f39e3">vqabs_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> a)</td></tr>
+<tr class="memdesc:a4b2c9440d5fa4909ae909869877f39e3"><td class="mdescLeft"> </td><td class="mdescRight">Saturating absolute value of 8 bit fixed point vector (8 elements) <a href="#a4b2c9440d5fa4909ae909869877f39e3">More...</a><br /></td></tr>
+<tr class="separator:a4b2c9440d5fa4909ae909869877f39e3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac8095edd652a1f3a76bf9d0f4251827a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ac8095edd652a1f3a76bf9d0f4251827a">vqabsq_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> a)</td></tr>
+<tr class="memdesc:ac8095edd652a1f3a76bf9d0f4251827a"><td class="mdescLeft"> </td><td class="mdescRight">Saturating absolute value of 8 bit fixed point vector (16 elements) <a href="#ac8095edd652a1f3a76bf9d0f4251827a">More...</a><br /></td></tr>
+<tr class="separator:ac8095edd652a1f3a76bf9d0f4251827a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3e913e95e286244f24f9a381909c8b26"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a3e913e95e286244f24f9a381909c8b26">vmax_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> b)</td></tr>
+<tr class="memdesc:a3e913e95e286244f24f9a381909c8b26"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point vector max (8 elements) <a href="#a3e913e95e286244f24f9a381909c8b26">More...</a><br /></td></tr>
+<tr class="separator:a3e913e95e286244f24f9a381909c8b26"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1627f818fb2ca90f7c3880f959030556"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a1627f818fb2ca90f7c3880f959030556">vmaxq_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> b)</td></tr>
+<tr class="memdesc:a1627f818fb2ca90f7c3880f959030556"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point vector max (16 elements) <a href="#a1627f818fb2ca90f7c3880f959030556">More...</a><br /></td></tr>
+<tr class="separator:a1627f818fb2ca90f7c3880f959030556"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1ecd37cd4eb461a98ca7c429e51802d2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a1ecd37cd4eb461a98ca7c429e51802d2">vpmax_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> b)</td></tr>
+<tr class="memdesc:a1ecd37cd4eb461a98ca7c429e51802d2"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point vector pairwise max (8 elements) <a href="#a1ecd37cd4eb461a98ca7c429e51802d2">More...</a><br /></td></tr>
+<tr class="separator:a1ecd37cd4eb461a98ca7c429e51802d2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abed4a7c95569e1fa72d0f8bfe5a50c84"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#abed4a7c95569e1fa72d0f8bfe5a50c84">vmin_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> b)</td></tr>
+<tr class="memdesc:abed4a7c95569e1fa72d0f8bfe5a50c84"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point vector min (8 elements) <a href="#abed4a7c95569e1fa72d0f8bfe5a50c84">More...</a><br /></td></tr>
+<tr class="separator:abed4a7c95569e1fa72d0f8bfe5a50c84"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3b393341c8500b469780137b3548f70b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a3b393341c8500b469780137b3548f70b">vminq_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> b)</td></tr>
+<tr class="memdesc:a3b393341c8500b469780137b3548f70b"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point vector min (16 elements) <a href="#a3b393341c8500b469780137b3548f70b">More...</a><br /></td></tr>
+<tr class="separator:a3b393341c8500b469780137b3548f70b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad3f599d91685017d37e87d36170a5342"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ad3f599d91685017d37e87d36170a5342">vpmin_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> b)</td></tr>
+<tr class="memdesc:ad3f599d91685017d37e87d36170a5342"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point vector pairwise min (8 elements) <a href="#ad3f599d91685017d37e87d36170a5342">More...</a><br /></td></tr>
+<tr class="separator:ad3f599d91685017d37e87d36170a5342"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad91fc981c1b7b04a1975de3aefc6a4f7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ad91fc981c1b7b04a1975de3aefc6a4f7">vadd_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> b)</td></tr>
+<tr class="memdesc:ad91fc981c1b7b04a1975de3aefc6a4f7"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point vector add (8 elements) <a href="#ad91fc981c1b7b04a1975de3aefc6a4f7">More...</a><br /></td></tr>
+<tr class="separator:ad91fc981c1b7b04a1975de3aefc6a4f7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a30eeb53208a2f67d4b0cf73a81b09467"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a30eeb53208a2f67d4b0cf73a81b09467">vaddq_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> b)</td></tr>
+<tr class="memdesc:a30eeb53208a2f67d4b0cf73a81b09467"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point vector add (16 elements) <a href="#a30eeb53208a2f67d4b0cf73a81b09467">More...</a><br /></td></tr>
+<tr class="separator:a30eeb53208a2f67d4b0cf73a81b09467"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8a14fe5fc71105c9bfebb28a58f06a52"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a8a14fe5fc71105c9bfebb28a58f06a52">vqadd_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> b)</td></tr>
+<tr class="memdesc:a8a14fe5fc71105c9bfebb28a58f06a52"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point vector saturating add (8 elements) <a href="#a8a14fe5fc71105c9bfebb28a58f06a52">More...</a><br /></td></tr>
+<tr class="separator:a8a14fe5fc71105c9bfebb28a58f06a52"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9765c5ee2d3cc9e3ca983fd2f47ba916"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a9765c5ee2d3cc9e3ca983fd2f47ba916">vqaddq_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> b)</td></tr>
+<tr class="memdesc:a9765c5ee2d3cc9e3ca983fd2f47ba916"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point vector saturating add (16 elements) <a href="#a9765c5ee2d3cc9e3ca983fd2f47ba916">More...</a><br /></td></tr>
+<tr class="separator:a9765c5ee2d3cc9e3ca983fd2f47ba916"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad80ab0f6b783c10e0488cb84a8812e8f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a82c56f0856f56d430393e6a00baee983">qint16x4_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ad80ab0f6b783c10e0488cb84a8812e8f">vqadd_qs16</a> (<a class="el" href="namespacearm__compute.xhtml#a82c56f0856f56d430393e6a00baee983">qint16x4_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a82c56f0856f56d430393e6a00baee983">qint16x4_t</a> b)</td></tr>
+<tr class="memdesc:ad80ab0f6b783c10e0488cb84a8812e8f"><td class="mdescLeft"> </td><td class="mdescRight">16 bit fixed point vector saturating add (4 elements) <a href="#ad80ab0f6b783c10e0488cb84a8812e8f">More...</a><br /></td></tr>
+<tr class="separator:ad80ab0f6b783c10e0488cb84a8812e8f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9d88750b393cdfe6f5685107bb1d98f7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a9d88750b393cdfe6f5685107bb1d98f7">vqaddq_qs16</a> (<a class="el" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> b)</td></tr>
+<tr class="memdesc:a9d88750b393cdfe6f5685107bb1d98f7"><td class="mdescLeft"> </td><td class="mdescRight">16 bit fixed point vector saturating add (8 elements) <a href="#a9d88750b393cdfe6f5685107bb1d98f7">More...</a><br /></td></tr>
+<tr class="separator:a9d88750b393cdfe6f5685107bb1d98f7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac73b89ba44bae1df9a8998ad2a99996e"><td class="memItemLeft" align="right" valign="top">int16x4_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ac73b89ba44bae1df9a8998ad2a99996e">vpaddl_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> a)</td></tr>
+<tr class="memdesc:ac73b89ba44bae1df9a8998ad2a99996e"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point vector saturating pairwise add (8 elements) <a href="#ac73b89ba44bae1df9a8998ad2a99996e">More...</a><br /></td></tr>
+<tr class="separator:ac73b89ba44bae1df9a8998ad2a99996e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a90c8ce2712bdb44fd58e3fa8b78bf6fb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a90c8ce2712bdb44fd58e3fa8b78bf6fb">vsub_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> b)</td></tr>
+<tr class="memdesc:a90c8ce2712bdb44fd58e3fa8b78bf6fb"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point vector subtraction (8 elements) <a href="#a90c8ce2712bdb44fd58e3fa8b78bf6fb">More...</a><br /></td></tr>
+<tr class="separator:a90c8ce2712bdb44fd58e3fa8b78bf6fb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1adda6690cbca8a996255e311e4762d4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a1adda6690cbca8a996255e311e4762d4">vsubq_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> b)</td></tr>
+<tr class="memdesc:a1adda6690cbca8a996255e311e4762d4"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point vector subtraction (16 elements) <a href="#a1adda6690cbca8a996255e311e4762d4">More...</a><br /></td></tr>
+<tr class="separator:a1adda6690cbca8a996255e311e4762d4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5b1437029acce06690a938e09f5a762a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a5b1437029acce06690a938e09f5a762a">vqsub_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> b)</td></tr>
+<tr class="memdesc:a5b1437029acce06690a938e09f5a762a"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point vector saturating subtraction (8 elements) <a href="#a5b1437029acce06690a938e09f5a762a">More...</a><br /></td></tr>
+<tr class="separator:a5b1437029acce06690a938e09f5a762a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab2a6ce3d8239e49c81af1ebc617680b4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ab2a6ce3d8239e49c81af1ebc617680b4">vqsubq_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> b)</td></tr>
+<tr class="memdesc:ab2a6ce3d8239e49c81af1ebc617680b4"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point vector saturating subtraction (16 elements) <a href="#ab2a6ce3d8239e49c81af1ebc617680b4">More...</a><br /></td></tr>
+<tr class="separator:ab2a6ce3d8239e49c81af1ebc617680b4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afccf1305c480f2338af8925bba6b54cd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#afccf1305c480f2338af8925bba6b54cd">vmul_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> b, int fixed_point_position)</td></tr>
+<tr class="memdesc:afccf1305c480f2338af8925bba6b54cd"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point vector multiply (8 elements) <a href="#afccf1305c480f2338af8925bba6b54cd">More...</a><br /></td></tr>
+<tr class="separator:afccf1305c480f2338af8925bba6b54cd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a031b17d4102856aa4d6bf7ebf83bf0ab"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a031b17d4102856aa4d6bf7ebf83bf0ab">vmulq_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> b, int fixed_point_position)</td></tr>
+<tr class="memdesc:a031b17d4102856aa4d6bf7ebf83bf0ab"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point vector multiply (16 elements) <a href="#a031b17d4102856aa4d6bf7ebf83bf0ab">More...</a><br /></td></tr>
+<tr class="separator:a031b17d4102856aa4d6bf7ebf83bf0ab"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a746205173d1a1f3955fa0c26b5be3b10"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a746205173d1a1f3955fa0c26b5be3b10">vqmul_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> b, int fixed_point_position)</td></tr>
+<tr class="memdesc:a746205173d1a1f3955fa0c26b5be3b10"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point vector saturating multiply (8 elements) <a href="#a746205173d1a1f3955fa0c26b5be3b10">More...</a><br /></td></tr>
+<tr class="separator:a746205173d1a1f3955fa0c26b5be3b10"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a081c0605c83155125ad95a144a1d6071"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a081c0605c83155125ad95a144a1d6071">vqmulq_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> b, int fixed_point_position)</td></tr>
+<tr class="memdesc:a081c0605c83155125ad95a144a1d6071"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point vector saturating multiply (16 elements) <a href="#a081c0605c83155125ad95a144a1d6071">More...</a><br /></td></tr>
+<tr class="separator:a081c0605c83155125ad95a144a1d6071"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3e959a9add1078033f3a27725323df13"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a3e959a9add1078033f3a27725323df13">vmull_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> b, int fixed_point_position)</td></tr>
+<tr class="memdesc:a3e959a9add1078033f3a27725323df13"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point vector long multiply (8 elements) <a href="#a3e959a9add1078033f3a27725323df13">More...</a><br /></td></tr>
+<tr class="separator:a3e959a9add1078033f3a27725323df13"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a26fd8532b87adbcf27214504c38918e4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a26fd8532b87adbcf27214504c38918e4">vmla_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> b, <a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> c, int fixed_point_position)</td></tr>
+<tr class="memdesc:a26fd8532b87adbcf27214504c38918e4"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point vector multiply-accumulate (8 elements). <a href="#a26fd8532b87adbcf27214504c38918e4">More...</a><br /></td></tr>
+<tr class="separator:a26fd8532b87adbcf27214504c38918e4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aca905840b37a91fff71e163aa619904c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#aca905840b37a91fff71e163aa619904c">vmlaq_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> b, <a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> c, int fixed_point_position)</td></tr>
+<tr class="memdesc:aca905840b37a91fff71e163aa619904c"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point vector multiply-accumulate (16 elements). <a href="#aca905840b37a91fff71e163aa619904c">More...</a><br /></td></tr>
+<tr class="separator:aca905840b37a91fff71e163aa619904c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac6cb55578e8ff1f3c20aa50f2e728679"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ac6cb55578e8ff1f3c20aa50f2e728679">vqmla_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> b, <a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> c, int fixed_point_position)</td></tr>
+<tr class="memdesc:ac6cb55578e8ff1f3c20aa50f2e728679"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point vector saturating multiply-accumulate (8 elements). <a href="#ac6cb55578e8ff1f3c20aa50f2e728679">More...</a><br /></td></tr>
+<tr class="separator:ac6cb55578e8ff1f3c20aa50f2e728679"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a037ac8df4a7e30a455a97218b88b67ad"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a037ac8df4a7e30a455a97218b88b67ad">vqmlaq_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> b, <a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> c, int fixed_point_position)</td></tr>
+<tr class="memdesc:a037ac8df4a7e30a455a97218b88b67ad"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point vector saturating multiply-accumulate (16 elements). <a href="#a037ac8df4a7e30a455a97218b88b67ad">More...</a><br /></td></tr>
+<tr class="separator:a037ac8df4a7e30a455a97218b88b67ad"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a13873b51e98dcb41229ccf911e671693"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a13873b51e98dcb41229ccf911e671693">vmlal_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> b, <a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> c, int fixed_point_position)</td></tr>
+<tr class="memdesc:a13873b51e98dcb41229ccf911e671693"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point vector multiply-accumulate long (8 elements). <a href="#a13873b51e98dcb41229ccf911e671693">More...</a><br /></td></tr>
+<tr class="separator:a13873b51e98dcb41229ccf911e671693"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aedfa26202753ca9db96ae3bcb51b14b0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#aedfa26202753ca9db96ae3bcb51b14b0">vqmlal_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> b, <a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> c, int fixed_point_position)</td></tr>
+<tr class="memdesc:aedfa26202753ca9db96ae3bcb51b14b0"><td class="mdescLeft"> </td><td class="mdescRight">8 bit fixed point vector saturating multiply-accumulate long (8 elements). <a href="#aedfa26202753ca9db96ae3bcb51b14b0">More...</a><br /></td></tr>
+<tr class="separator:aedfa26202753ca9db96ae3bcb51b14b0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9f1ff9f119f659c10a90d0a9091811b0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a9f1ff9f119f659c10a90d0a9091811b0">vcvt_qs8_f32</a> (const float32x4x2_t &a, int fixed_point_position)</td></tr>
+<tr class="memdesc:a9f1ff9f119f659c10a90d0a9091811b0"><td class="mdescLeft"> </td><td class="mdescRight">Convert a float vector with 4x2 elements to 8 bit fixed point vector with 8 elements. <a href="#a9f1ff9f119f659c10a90d0a9091811b0">More...</a><br /></td></tr>
+<tr class="separator:a9f1ff9f119f659c10a90d0a9091811b0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac2c526cae11f55c15d9e04e8767cb6db"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ac2c526cae11f55c15d9e04e8767cb6db">vcvtq_qs8_f32</a> (const float32x4x4_t &a, int fixed_point_position)</td></tr>
+<tr class="memdesc:ac2c526cae11f55c15d9e04e8767cb6db"><td class="mdescLeft"> </td><td class="mdescRight">Convert a float vector with 4x4 elements to 8 bit fixed point vector with 16 elements. <a href="#ac2c526cae11f55c15d9e04e8767cb6db">More...</a><br /></td></tr>
+<tr class="separator:ac2c526cae11f55c15d9e04e8767cb6db"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a14a78befffd5c48b43554fdc28d654ff"><td class="memItemLeft" align="right" valign="top">float32x4x2_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a14a78befffd5c48b43554fdc28d654ff">vcvt_f32_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> a, int fixed_point_position)</td></tr>
+<tr class="memdesc:a14a78befffd5c48b43554fdc28d654ff"><td class="mdescLeft"> </td><td class="mdescRight">Convert a 8 bit fixed point vector with 8 elements to a float vector with 4x2 elements. <a href="#a14a78befffd5c48b43554fdc28d654ff">More...</a><br /></td></tr>
+<tr class="separator:a14a78befffd5c48b43554fdc28d654ff"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a19e68f6a298ae587a491df52d6859350"><td class="memItemLeft" align="right" valign="top">float32x4x4_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a19e68f6a298ae587a491df52d6859350">vcvtq_qs8_f32</a> (<a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> a, int fixed_point_position)</td></tr>
+<tr class="memdesc:a19e68f6a298ae587a491df52d6859350"><td class="mdescLeft"> </td><td class="mdescRight">Convert a 8 bit fixed point vector with 16 elements to a float vector with 4x4 elements. <a href="#a19e68f6a298ae587a491df52d6859350">More...</a><br /></td></tr>
+<tr class="separator:a19e68f6a298ae587a491df52d6859350"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa24b270b0193ad8983dfecd6105c4936"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#aa24b270b0193ad8983dfecd6105c4936">vrecip_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> a, int fixed_point_position)</td></tr>
+<tr class="memdesc:aa24b270b0193ad8983dfecd6105c4936"><td class="mdescLeft"> </td><td class="mdescRight">Calculate reciprocal of a fixed point 8bit number using the Newton-Raphson method. <a href="#aa24b270b0193ad8983dfecd6105c4936">More...</a><br /></td></tr>
+<tr class="separator:aa24b270b0193ad8983dfecd6105c4936"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abbeb1dc4834fb4e97cf94d702d0e0f91"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#abbeb1dc4834fb4e97cf94d702d0e0f91">vrecipq_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> a, int fixed_point_position)</td></tr>
+<tr class="memdesc:abbeb1dc4834fb4e97cf94d702d0e0f91"><td class="mdescLeft"> </td><td class="mdescRight">Calculate reciprocal of a fixed point 8bit number using the Newton-Raphson method. <a href="#abbeb1dc4834fb4e97cf94d702d0e0f91">More...</a><br /></td></tr>
+<tr class="separator:abbeb1dc4834fb4e97cf94d702d0e0f91"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aeab4c6963804a85c9ea6c319f4e95a0b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#aeab4c6963804a85c9ea6c319f4e95a0b">vdiv_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> a, int8x8_t b, int fixed_point_position)</td></tr>
+<tr class="memdesc:aeab4c6963804a85c9ea6c319f4e95a0b"><td class="mdescLeft"> </td><td class="mdescRight">Division fixed point 8bit (8 elements) <a href="#aeab4c6963804a85c9ea6c319f4e95a0b">More...</a><br /></td></tr>
+<tr class="separator:aeab4c6963804a85c9ea6c319f4e95a0b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aebc9202dc76554d81b3b082e74016197"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#aebc9202dc76554d81b3b082e74016197">vdivq_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> a, int8x16_t b, int fixed_point_position)</td></tr>
+<tr class="memdesc:aebc9202dc76554d81b3b082e74016197"><td class="mdescLeft"> </td><td class="mdescRight">Division fixed point 8bit (16 elements) <a href="#aebc9202dc76554d81b3b082e74016197">More...</a><br /></td></tr>
+<tr class="separator:aebc9202dc76554d81b3b082e74016197"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a91b74be928419cd95068ccc9c6f1cd83"><td class="memTemplParams" colspan="2">template<bool islog> </td></tr>
+<tr class="memitem:a91b74be928419cd95068ccc9c6f1cd83"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a91b74be928419cd95068ccc9c6f1cd83">vtaylor_poly_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> a, int fixed_point_position)</td></tr>
+<tr class="memdesc:a91b74be928419cd95068ccc9c6f1cd83"><td class="mdescLeft"> </td><td class="mdescRight">Perform a 4th degree polynomial approximation. <a href="#a91b74be928419cd95068ccc9c6f1cd83">More...</a><br /></td></tr>
+<tr class="separator:a91b74be928419cd95068ccc9c6f1cd83"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9b9a80aab8862e344ef91591a0e6e199"><td class="memTemplParams" colspan="2">template<bool islog> </td></tr>
+<tr class="memitem:a9b9a80aab8862e344ef91591a0e6e199"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a9b9a80aab8862e344ef91591a0e6e199">vtaylor_polyq_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> a, int fixed_point_position)</td></tr>
+<tr class="memdesc:a9b9a80aab8862e344ef91591a0e6e199"><td class="mdescLeft"> </td><td class="mdescRight">Perform a 4th degree polynomial approximation. <a href="#a9b9a80aab8862e344ef91591a0e6e199">More...</a><br /></td></tr>
+<tr class="separator:a9b9a80aab8862e344ef91591a0e6e199"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a635b41196d74b1f2c4d9ee9298444796"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a635b41196d74b1f2c4d9ee9298444796">vqexp_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> a, int fixed_point_position)</td></tr>
+<tr class="memdesc:a635b41196d74b1f2c4d9ee9298444796"><td class="mdescLeft"> </td><td class="mdescRight">Calculate saturating exponential fixed point 8bit (8 elements) <a href="#a635b41196d74b1f2c4d9ee9298444796">More...</a><br /></td></tr>
+<tr class="separator:a635b41196d74b1f2c4d9ee9298444796"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae6cf1822b8fbad305677650a2b751247"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ae6cf1822b8fbad305677650a2b751247">vqexpq_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> a, int fixed_point_position)</td></tr>
+<tr class="memdesc:ae6cf1822b8fbad305677650a2b751247"><td class="mdescLeft"> </td><td class="mdescRight">Calculate saturating exponential fixed point 8bit (16 elements) <a href="#ae6cf1822b8fbad305677650a2b751247">More...</a><br /></td></tr>
+<tr class="separator:ae6cf1822b8fbad305677650a2b751247"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a475d617b2ee92ec39588e6d6e488471a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a475d617b2ee92ec39588e6d6e488471a">vlog_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> a, int fixed_point_position)</td></tr>
+<tr class="memdesc:a475d617b2ee92ec39588e6d6e488471a"><td class="mdescLeft"> </td><td class="mdescRight">Calculate logarithm fixed point 16bit (8 elements) <a href="#a475d617b2ee92ec39588e6d6e488471a">More...</a><br /></td></tr>
+<tr class="separator:a475d617b2ee92ec39588e6d6e488471a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a340b9cd5ad88f1a821498c6fad80e82c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a340b9cd5ad88f1a821498c6fad80e82c">vlogq_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> a, int fixed_point_position)</td></tr>
+<tr class="memdesc:a340b9cd5ad88f1a821498c6fad80e82c"><td class="mdescLeft"> </td><td class="mdescRight">Calculate logarithm fixed point 16bit (16 elements) <a href="#a340b9cd5ad88f1a821498c6fad80e82c">More...</a><br /></td></tr>
+<tr class="separator:a340b9cd5ad88f1a821498c6fad80e82c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab7fbbbe8d980de582a73b5546b303b1f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ab7fbbbe8d980de582a73b5546b303b1f">vinvsqrt_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> a, int fixed_point_position)</td></tr>
+<tr class="memdesc:ab7fbbbe8d980de582a73b5546b303b1f"><td class="mdescLeft"> </td><td class="mdescRight">Calculate inverse square root for fixed point 8bit using Newton-Raphosn method (8 elements) <a href="#ab7fbbbe8d980de582a73b5546b303b1f">More...</a><br /></td></tr>
+<tr class="separator:ab7fbbbe8d980de582a73b5546b303b1f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5ddc3dc4b4ee6847fd96c6a8599e20e4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a5ddc3dc4b4ee6847fd96c6a8599e20e4">vqinvsqrt_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> a, int fixed_point_position)</td></tr>
+<tr class="memdesc:a5ddc3dc4b4ee6847fd96c6a8599e20e4"><td class="mdescLeft"> </td><td class="mdescRight">Calculate saturating inverse square root for fixed point 8bit using Newton-Raphosn method (8 elements) <a href="#a5ddc3dc4b4ee6847fd96c6a8599e20e4">More...</a><br /></td></tr>
+<tr class="separator:a5ddc3dc4b4ee6847fd96c6a8599e20e4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4be9120d5c04e6aab0831095acd24534"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a4be9120d5c04e6aab0831095acd24534">vinvsqrtq_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> a, int fixed_point_position)</td></tr>
+<tr class="memdesc:a4be9120d5c04e6aab0831095acd24534"><td class="mdescLeft"> </td><td class="mdescRight">Calculate inverse square root for fixed point 8bit using Newton-Raphosn method (16 elements) <a href="#a4be9120d5c04e6aab0831095acd24534">More...</a><br /></td></tr>
+<tr class="separator:a4be9120d5c04e6aab0831095acd24534"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad5d5110467053814882fb616c6cb855b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ad5d5110467053814882fb616c6cb855b">vqinvsqrtq_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> a, int fixed_point_position)</td></tr>
+<tr class="memdesc:ad5d5110467053814882fb616c6cb855b"><td class="mdescLeft"> </td><td class="mdescRight">Calculate saturating inverse square root for fixed point 8bit using Newton-Raphosn method (16 elements) <a href="#ad5d5110467053814882fb616c6cb855b">More...</a><br /></td></tr>
+<tr class="separator:ad5d5110467053814882fb616c6cb855b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a490b00ba8696c15a0d8267cb73fa359b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a490b00ba8696c15a0d8267cb73fa359b">vtanh_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> a, int fixed_point_position)</td></tr>
+<tr class="memdesc:a490b00ba8696c15a0d8267cb73fa359b"><td class="mdescLeft"> </td><td class="mdescRight">Calculate hyperbolic tangent for fixed point 8bit (8 elements) <a href="#a490b00ba8696c15a0d8267cb73fa359b">More...</a><br /></td></tr>
+<tr class="separator:a490b00ba8696c15a0d8267cb73fa359b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:adba961ae41ea74a338dab569938e6312"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#adba961ae41ea74a338dab569938e6312">vtanhq_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> a, int fixed_point_position)</td></tr>
+<tr class="memdesc:adba961ae41ea74a338dab569938e6312"><td class="mdescLeft"> </td><td class="mdescRight">Calculate hyperbolic tangent for fixed point 8bit (16 elements) <a href="#adba961ae41ea74a338dab569938e6312">More...</a><br /></td></tr>
+<tr class="separator:adba961ae41ea74a338dab569938e6312"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7214e62803b7c5c347124a5ec5ade4e2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a7214e62803b7c5c347124a5ec5ade4e2">vqpowq_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> b, int fixed_point_position)</td></tr>
+<tr class="memdesc:a7214e62803b7c5c347124a5ec5ade4e2"><td class="mdescLeft"> </td><td class="mdescRight">Calculate saturating n power for fixed point 8bit (16 elements). <a href="#a7214e62803b7c5c347124a5ec5ade4e2">More...</a><br /></td></tr>
+<tr class="separator:a7214e62803b7c5c347124a5ec5ade4e2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa9a56a13e02fa346fcbe59257b2cef74"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#aa9a56a13e02fa346fcbe59257b2cef74">vqmovn_qs16</a> (<a class="el" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> a)</td></tr>
+<tr class="separator:aa9a56a13e02fa346fcbe59257b2cef74"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aed2fc8d1b9642b7625379a930ef4914a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#aed2fc8d1b9642b7625379a930ef4914a">vdupq_n_qs16</a> (<a class="el" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> a)</td></tr>
+<tr class="separator:aed2fc8d1b9642b7625379a930ef4914a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac18aedae4207e681f6f833281d2395a0"><td class="memItemLeft" align="right" valign="top">float32x4x4_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ac18aedae4207e681f6f833281d2395a0">vcvtq_f32_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> a, int fixed_point_position)</td></tr>
+<tr class="separator:ac18aedae4207e681f6f833281d2395a0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3dd4382391c752128ab7b3a6dd68314b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a3dd4382391c752128ab7b3a6dd68314b">vqrecipq_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> a, int fixed_point_position)</td></tr>
+<tr class="separator:a3dd4382391c752128ab7b3a6dd68314b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3d36b520df07b909b027685ddc8e67c0"><td class="memTemplParams" colspan="2">template<bool islog> </td></tr>
+<tr class="memitem:a3d36b520df07b909b027685ddc8e67c0"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a3d36b520df07b909b027685ddc8e67c0">vqtaylor_poly_qs8</a> (int8x8_t a, int fixed_point_position)</td></tr>
+<tr class="separator:a3d36b520df07b909b027685ddc8e67c0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa754195778af2be8fd3c48192eb1e5b6"><td class="memTemplParams" colspan="2">template<bool islog> </td></tr>
+<tr class="memitem:aa754195778af2be8fd3c48192eb1e5b6"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#aa754195778af2be8fd3c48192eb1e5b6">vqtaylor_polyq_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> a, int fixed_point_position)</td></tr>
+<tr class="separator:aa754195778af2be8fd3c48192eb1e5b6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0d4cef7d7331ac5a216d8bd3000564db"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a0d4cef7d7331ac5a216d8bd3000564db">vqpowq_qs8</a> (<a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> a, <a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> b, int fixed_point_position)</td></tr>
+<tr class="separator:a0d4cef7d7331ac5a216d8bd3000564db"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2e27db6b9692c4c2013653e276af654d"><td class="memItemLeft" align="right" valign="top">float32x4_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a2e27db6b9692c4c2013653e276af654d">vinvsqrtq_f32</a> (float32x4_t x)</td></tr>
+<tr class="memdesc:a2e27db6b9692c4c2013653e276af654d"><td class="mdescLeft"> </td><td class="mdescRight">Calculate inverse square root. <a href="#a2e27db6b9692c4c2013653e276af654d">More...</a><br /></td></tr>
+<tr class="separator:a2e27db6b9692c4c2013653e276af654d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac8f459d5899b79c00fb4042a5b3470fb"><td class="memItemLeft" align="right" valign="top">float32x4_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ac8f459d5899b79c00fb4042a5b3470fb">vinvq_f32</a> (float32x4_t x)</td></tr>
+<tr class="memdesc:ac8f459d5899b79c00fb4042a5b3470fb"><td class="mdescLeft"> </td><td class="mdescRight">Calculate reciprocal. <a href="#ac8f459d5899b79c00fb4042a5b3470fb">More...</a><br /></td></tr>
+<tr class="separator:ac8f459d5899b79c00fb4042a5b3470fb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4fa76a98dce5ed1b655ff840f2ce6e57"><td class="memItemLeft" align="right" valign="top">float32x4_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a4fa76a98dce5ed1b655ff840f2ce6e57">vtaylor_polyq_f32</a> (float32x4_t x, const std::array< float32x4_t, 8 > &coeffs)</td></tr>
+<tr class="memdesc:a4fa76a98dce5ed1b655ff840f2ce6e57"><td class="mdescLeft"> </td><td class="mdescRight">Perform a 7th degree polynomial approximation using Estrin's method. <a href="#a4fa76a98dce5ed1b655ff840f2ce6e57">More...</a><br /></td></tr>
+<tr class="separator:a4fa76a98dce5ed1b655ff840f2ce6e57"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ade3ef16de304661943c900ac9a47d28f"><td class="memItemLeft" align="right" valign="top">float32x4_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ade3ef16de304661943c900ac9a47d28f">vexpq_f32</a> (float32x4_t x)</td></tr>
+<tr class="memdesc:ade3ef16de304661943c900ac9a47d28f"><td class="mdescLeft"> </td><td class="mdescRight">Calculate exponential. <a href="#ade3ef16de304661943c900ac9a47d28f">More...</a><br /></td></tr>
+<tr class="separator:ade3ef16de304661943c900ac9a47d28f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a37a3e03a22ad160a2e9e5c133607e020"><td class="memItemLeft" align="right" valign="top">float32x4_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a37a3e03a22ad160a2e9e5c133607e020">vlogq_f32</a> (float32x4_t x)</td></tr>
+<tr class="memdesc:a37a3e03a22ad160a2e9e5c133607e020"><td class="mdescLeft"> </td><td class="mdescRight">Calculate logarithm. <a href="#a37a3e03a22ad160a2e9e5c133607e020">More...</a><br /></td></tr>
+<tr class="separator:a37a3e03a22ad160a2e9e5c133607e020"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7845701adefdb1adafc98ca3c4918c2e"><td class="memItemLeft" align="right" valign="top">float32x4_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a7845701adefdb1adafc98ca3c4918c2e">vtanhq_f32</a> (float32x4_t val)</td></tr>
+<tr class="memdesc:a7845701adefdb1adafc98ca3c4918c2e"><td class="mdescLeft"> </td><td class="mdescRight">Calculate hyperbolic tangent. <a href="#a7845701adefdb1adafc98ca3c4918c2e">More...</a><br /></td></tr>
+<tr class="separator:a7845701adefdb1adafc98ca3c4918c2e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a45c3c1474c3e3ec31ec13efaf6acd261"><td class="memItemLeft" align="right" valign="top">float32x4_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a45c3c1474c3e3ec31ec13efaf6acd261">vpowq_f32</a> (float32x4_t val, float32x4_t n)</td></tr>
+<tr class="memdesc:a45c3c1474c3e3ec31ec13efaf6acd261"><td class="mdescLeft"> </td><td class="mdescRight">Calculate n power of a number. <a href="#a45c3c1474c3e3ec31ec13efaf6acd261">More...</a><br /></td></tr>
+<tr class="separator:a45c3c1474c3e3ec31ec13efaf6acd261"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:adf0c6059174045f80af46a0f1fb57bc6"><td class="memTemplParams" colspan="2">template<typename S , typename T > </td></tr>
<tr class="memitem:adf0c6059174045f80af46a0f1fb57bc6"><td class="memTemplItemLeft" align="right" valign="top">auto </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#adf0c6059174045f80af46a0f1fb57bc6">ceil_to_multiple</a> (S value, T divisor) -> decltype(((value+divisor-1)/divisor)*divisor)</td></tr>
<tr class="memdesc:adf0c6059174045f80af46a0f1fb57bc6"><td class="mdescLeft"> </td><td class="mdescRight">Computes the smallest number larger or equal to value that is a multiple of divisor. <a href="#adf0c6059174045f80af46a0f1fb57bc6">More...</a><br /></td></tr>
@@ -1821,11 +2399,18 @@
<tr class="memitem:abd15add5c6c7de5c8205ce236875aadd"><td class="memItemLeft" align="right" valign="top">const std::string & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#abd15add5c6c7de5c8205ce236875aadd">string_from_border_mode</a> (<a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> border_mode)</td></tr>
<tr class="memdesc:abd15add5c6c7de5c8205ce236875aadd"><td class="mdescLeft"> </td><td class="mdescRight">Translates a given border mode policy to a string. <a href="#abd15add5c6c7de5c8205ce236875aadd">More...</a><br /></td></tr>
<tr class="separator:abd15add5c6c7de5c8205ce236875aadd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab72adf11888176ec19224deef7b1a7dc"><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ab72adf11888176ec19224deef7b1a7dc">lower_string</a> (std::string val)</td></tr>
-<tr class="memdesc:ab72adf11888176ec19224deef7b1a7dc"><td class="mdescLeft"> </td><td class="mdescRight">Lower a given string. <a href="#ab72adf11888176ec19224deef7b1a7dc">More...</a><br /></td></tr>
-<tr class="separator:ab72adf11888176ec19224deef7b1a7dc"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afb5698af5404d5d11e3516c87b6e7041"><td class="memItemLeft" align="right" valign="top">const std::string & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#afb5698af5404d5d11e3516c87b6e7041">string_from_norm_type</a> (<a class="el" href="namespacearm__compute.xhtml#ad4bb8dabdbf8ad75e34220cc666b59ca">NormType</a> type)</td></tr>
+<tr class="memdesc:afb5698af5404d5d11e3516c87b6e7041"><td class="mdescLeft"> </td><td class="mdescRight">Translates a given normalization type to a string. <a href="#afb5698af5404d5d11e3516c87b6e7041">More...</a><br /></td></tr>
+<tr class="separator:afb5698af5404d5d11e3516c87b6e7041"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a532fb45c0261724a4c2e755cfd3a44e6"><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a532fb45c0261724a4c2e755cfd3a44e6">lower_string</a> (const std::string &val)</td></tr>
+<tr class="memdesc:a532fb45c0261724a4c2e755cfd3a44e6"><td class="mdescLeft"> </td><td class="mdescRight">Lower a given string. <a href="#a532fb45c0261724a4c2e755cfd3a44e6">More...</a><br /></td></tr>
+<tr class="separator:a532fb45c0261724a4c2e755cfd3a44e6"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:af5982a092e9eb743fce2d6392bdd8897"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#af5982a092e9eb743fce2d6392bdd8897">is_data_type_float</a> (<a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dt)</td></tr>
+<tr class="memdesc:af5982a092e9eb743fce2d6392bdd8897"><td class="mdescLeft"> </td><td class="mdescRight">Check if a given data type is of floating point type. <a href="#af5982a092e9eb743fce2d6392bdd8897">More...</a><br /></td></tr>
<tr class="separator:af5982a092e9eb743fce2d6392bdd8897"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab6bb62694ae8369d18a9c9687040975e"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ab6bb62694ae8369d18a9c9687040975e">is_data_type_fixed_point</a> (<a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dt)</td></tr>
+<tr class="memdesc:ab6bb62694ae8369d18a9c9687040975e"><td class="mdescLeft"> </td><td class="mdescRight">Check if a given data type is of fixed point type. <a href="#ab6bb62694ae8369d18a9c9687040975e">More...</a><br /></td></tr>
+<tr class="separator:ab6bb62694ae8369d18a9c9687040975e"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:aa3a28b8acd21301990e06377c64e1276"><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
<tr class="memitem:aa3a28b8acd21301990e06377c64e1276"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#aa3a28b8acd21301990e06377c64e1276">print_consecutive_elements_impl</a> (std::ostream &s, const T *ptr, unsigned int n, int stream_width=0, const std::string &element_delim=" ")</td></tr>
<tr class="memdesc:aa3a28b8acd21301990e06377c64e1276"><td class="mdescLeft"> </td><td class="mdescRight">Print consecutive elements to an output stream. <a href="#aa3a28b8acd21301990e06377c64e1276">More...</a><br /></td></tr>
@@ -1840,6 +2425,10 @@
<tr class="memitem:ac3f2de3a35ff8d9a47b5b793637784e7"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ac3f2de3a35ff8d9a47b5b793637784e7">max_consecutive_elements_display_width</a> (std::ostream &s, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dt, const uint8_t *ptr, unsigned int n)</td></tr>
<tr class="memdesc:ac3f2de3a35ff8d9a47b5b793637784e7"><td class="mdescLeft"> </td><td class="mdescRight">Identify the maximum width of n consecutive elements. <a href="#ac3f2de3a35ff8d9a47b5b793637784e7">More...</a><br /></td></tr>
<tr class="separator:ac3f2de3a35ff8d9a47b5b793637784e7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a078507835115009a81ee2974d6073bb9"><td class="memTemplParams" colspan="2">template<typename... Ts> </td></tr>
+<tr class="memitem:a078507835115009a81ee2974d6073bb9"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a078507835115009a81ee2974d6073bb9">error_on_nullptr</a> (const char *function, const char *file, const int line, Ts &&...pointers)</td></tr>
+<tr class="memdesc:a078507835115009a81ee2974d6073bb9"><td class="mdescLeft"> </td><td class="mdescRight">Throw an error if one of the pointers is a nullptr. <a href="#a078507835115009a81ee2974d6073bb9">More...</a><br /></td></tr>
+<tr class="separator:a078507835115009a81ee2974d6073bb9"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a26a9847c05c48bd1470f22f898ee254d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a26a9847c05c48bd1470f22f898ee254d">error_on_mismatching_windows</a> (const char *function, const char *file, const int line, const <a class="el" href="classarm__compute_1_1_window.xhtml">Window</a> &full, const <a class="el" href="classarm__compute_1_1_window.xhtml">Window</a> &win)</td></tr>
<tr class="memdesc:a26a9847c05c48bd1470f22f898ee254d"><td class="mdescLeft"> </td><td class="mdescRight">Throw an error if the passed window is invalid. <a href="#a26a9847c05c48bd1470f22f898ee254d">More...</a><br /></td></tr>
<tr class="separator:a26a9847c05c48bd1470f22f898ee254d"><td class="memSeparator" colspan="2"> </td></tr>
@@ -1852,16 +2441,26 @@
<tr class="memitem:a6fed5543ae383442a51362e6607c4e65"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a6fed5543ae383442a51362e6607c4e65">error_on_window_dimensions_gte</a> (const char *function, const char *file, const int line, const <a class="el" href="classarm__compute_1_1_window.xhtml">Window</a> &win, unsigned int max_dim)</td></tr>
<tr class="memdesc:a6fed5543ae383442a51362e6607c4e65"><td class="mdescLeft"> </td><td class="mdescRight">Throw an error if the passed window has too many dimensions. <a href="#a6fed5543ae383442a51362e6607c4e65">More...</a><br /></td></tr>
<tr class="separator:a6fed5543ae383442a51362e6607c4e65"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a98c979818eae59f104fcaf8de723aeda"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a98c979818eae59f104fcaf8de723aeda">have_different_shapes</a> (const <a class="el" href="classarm__compute_1_1_i_tensor.xhtml">ITensor</a> *tensor_1, const <a class="el" href="classarm__compute_1_1_i_tensor.xhtml">ITensor</a> *tensor_2)</td></tr>
-<tr class="separator:a98c979818eae59f104fcaf8de723aeda"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aff062b84c57c614a2de4d54db2cbc31c"><td class="memTemplParams" colspan="2">template<typename T , typename... Ts> </td></tr>
+<tr class="memitem:aff062b84c57c614a2de4d54db2cbc31c"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#aff062b84c57c614a2de4d54db2cbc31c">error_on_mismatching_dimensions</a> (const char *function, const char *file, int line, const <a class="el" href="classarm__compute_1_1_dimensions.xhtml">Dimensions</a>< T > &dim1, const <a class="el" href="classarm__compute_1_1_dimensions.xhtml">Dimensions</a>< T > &dim2, Ts &&...dims)</td></tr>
+<tr class="memdesc:aff062b84c57c614a2de4d54db2cbc31c"><td class="mdescLeft"> </td><td class="mdescRight">Throw an error if the passed dimension objects differ. <a href="#aff062b84c57c614a2de4d54db2cbc31c">More...</a><br /></td></tr>
+<tr class="separator:aff062b84c57c614a2de4d54db2cbc31c"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a7b689868b627ba9e22c8473c5f985512"><td class="memTemplParams" colspan="2">template<typename... Ts> </td></tr>
<tr class="memitem:a7b689868b627ba9e22c8473c5f985512"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a7b689868b627ba9e22c8473c5f985512">error_on_mismatching_shapes</a> (const char *function, const char *file, const int line, const <a class="el" href="classarm__compute_1_1_i_tensor.xhtml">ITensor</a> *tensor_1, const <a class="el" href="classarm__compute_1_1_i_tensor.xhtml">ITensor</a> *tensor_2, Ts...tensors)</td></tr>
-<tr class="memdesc:a7b689868b627ba9e22c8473c5f985512"><td class="mdescLeft"> </td><td class="mdescRight">Throw an error if the passed two tensors have different shapes. <a href="#a7b689868b627ba9e22c8473c5f985512">More...</a><br /></td></tr>
+<tr class="memdesc:a7b689868b627ba9e22c8473c5f985512"><td class="mdescLeft"> </td><td class="mdescRight">Throw an error if the passed two tensors have different shapes from the given dimension. <a href="#a7b689868b627ba9e22c8473c5f985512">More...</a><br /></td></tr>
<tr class="separator:a7b689868b627ba9e22c8473c5f985512"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a496e03102bca40f666c12a575d4a6157"><td class="memTemplParams" colspan="2">template<typename... Ts> </td></tr>
+<tr class="memitem:a496e03102bca40f666c12a575d4a6157"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a496e03102bca40f666c12a575d4a6157">error_on_mismatching_shapes</a> (const char *function, const char *file, const int line, unsigned int upper_dim, const <a class="el" href="classarm__compute_1_1_i_tensor.xhtml">ITensor</a> *tensor_1, const <a class="el" href="classarm__compute_1_1_i_tensor.xhtml">ITensor</a> *tensor_2, Ts...tensors)</td></tr>
+<tr class="memdesc:a496e03102bca40f666c12a575d4a6157"><td class="mdescLeft"> </td><td class="mdescRight">Throw an error if the passed two tensors have different shapes from the given dimension. <a href="#a496e03102bca40f666c12a575d4a6157">More...</a><br /></td></tr>
+<tr class="separator:a496e03102bca40f666c12a575d4a6157"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ad35d92af32949e38ec38b3d8e46b566c"><td class="memTemplParams" colspan="2">template<typename... Ts> </td></tr>
<tr class="memitem:ad35d92af32949e38ec38b3d8e46b566c"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#ad35d92af32949e38ec38b3d8e46b566c">error_on_mismatching_data_types</a> (const char *function, const char *file, const int line, const <a class="el" href="classarm__compute_1_1_i_tensor.xhtml">ITensor</a> *tensor_1, const <a class="el" href="classarm__compute_1_1_i_tensor.xhtml">ITensor</a> *tensor_2, Ts...tensors)</td></tr>
<tr class="memdesc:ad35d92af32949e38ec38b3d8e46b566c"><td class="mdescLeft"> </td><td class="mdescRight">Throw an error if the passed two tensors have different data types. <a href="#ad35d92af32949e38ec38b3d8e46b566c">More...</a><br /></td></tr>
<tr class="separator:ad35d92af32949e38ec38b3d8e46b566c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a526ed43a37ba0faf2c1789175ec1a350"><td class="memTemplParams" colspan="2">template<typename... Ts> </td></tr>
+<tr class="memitem:a526ed43a37ba0faf2c1789175ec1a350"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a526ed43a37ba0faf2c1789175ec1a350">error_on_mismatching_fixed_point</a> (const char *function, const char *file, const int line, const <a class="el" href="classarm__compute_1_1_i_tensor.xhtml">ITensor</a> *tensor_1, const <a class="el" href="classarm__compute_1_1_i_tensor.xhtml">ITensor</a> *tensor_2, Ts...tensors)</td></tr>
+<tr class="memdesc:a526ed43a37ba0faf2c1789175ec1a350"><td class="mdescLeft"> </td><td class="mdescRight">Throw an error if the passed tensors have different fixed point data types or different fixed point positions. <a href="#a526ed43a37ba0faf2c1789175ec1a350">More...</a><br /></td></tr>
+<tr class="separator:a526ed43a37ba0faf2c1789175ec1a350"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a0b360558b516e256f0af005a164c674e"><td class="memTemplParams" colspan="2">template<typename T , typename F , typename... Fs> </td></tr>
<tr class="memitem:a0b360558b516e256f0af005a164c674e"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a0b360558b516e256f0af005a164c674e">error_on_format_not_in</a> (const char *function, const char *file, const int line, const T *object, F &&format, Fs &&...formats)</td></tr>
<tr class="memdesc:a0b360558b516e256f0af005a164c674e"><td class="mdescLeft"> </td><td class="mdescRight">Throw an error if the format of the passed tensor/multi-image does not match any of the formats provided. <a href="#a0b360558b516e256f0af005a164c674e">More...</a><br /></td></tr>
@@ -1890,11 +2489,82 @@
<tr class="memitem:a21a4884cd1dbfa83351b8efa265f526a"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a21a4884cd1dbfa83351b8efa265f526a">error_on_unconfigured_kernel</a> (const char *function, const char *file, const int line, const <a class="el" href="classarm__compute_1_1_i_kernel.xhtml">IKernel</a> *kernel)</td></tr>
<tr class="memdesc:a21a4884cd1dbfa83351b8efa265f526a"><td class="mdescLeft"> </td><td class="mdescRight">Throw an error if the kernel is not configured. <a href="#a21a4884cd1dbfa83351b8efa265f526a">More...</a><br /></td></tr>
<tr class="separator:a21a4884cd1dbfa83351b8efa265f526a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a36ffb104aed50deb360db6f3afa4c394"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a36ffb104aed50deb360db6f3afa4c394">error_on_invalid_subtensor</a> (const char *function, const char *file, const int line, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &parent_shape, const <a class="el" href="classarm__compute_1_1_coordinates.xhtml">Coordinates</a> &coords, const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> &shape)</td></tr>
+<tr class="memdesc:a36ffb104aed50deb360db6f3afa4c394"><td class="mdescLeft"> </td><td class="mdescRight">Throw an error if if the coordinates and shape of the subtensor are within the parent tensor. <a href="#a36ffb104aed50deb360db6f3afa4c394">More...</a><br /></td></tr>
+<tr class="separator:a36ffb104aed50deb360db6f3afa4c394"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a858e835f22c359080a09709c6dd950b1"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a858e835f22c359080a09709c6dd950b1">error_on_invalid_subtensor_valid_region</a> (const char *function, const char *file, const int line, const <a class="el" href="structarm__compute_1_1_valid_region.xhtml">ValidRegion</a> &parent_valid_region, const <a class="el" href="structarm__compute_1_1_valid_region.xhtml">ValidRegion</a> &valid_region)</td></tr>
+<tr class="memdesc:a858e835f22c359080a09709c6dd950b1"><td class="mdescLeft"> </td><td class="mdescRight">Throw an error if the valid region of a subtensor is not inside the valid region of the parent tensor. <a href="#a858e835f22c359080a09709c6dd950b1">More...</a><br /></td></tr>
+<tr class="separator:a858e835f22c359080a09709c6dd950b1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a064db352a2f4153e6237054343d5fe7a"><td class="memTemplParams" colspan="2">template<typename... Ts> </td></tr>
+<tr class="memitem:a064db352a2f4153e6237054343d5fe7a"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a064db352a2f4153e6237054343d5fe7a">error_on_mismatching_fixed_point_position</a> (const char *function, const char *file, const int line, const <a class="el" href="classarm__compute_1_1_i_tensor.xhtml">ITensor</a> *tensor_1, const <a class="el" href="classarm__compute_1_1_i_tensor.xhtml">ITensor</a> *tensor_2, Ts...tensors)</td></tr>
+<tr class="memdesc:a064db352a2f4153e6237054343d5fe7a"><td class="mdescLeft"> </td><td class="mdescRight">Throw an error if the input fixed-point positions are different. <a href="#a064db352a2f4153e6237054343d5fe7a">More...</a><br /></td></tr>
+<tr class="separator:a064db352a2f4153e6237054343d5fe7a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9afdaa4d8bbb78938110ada1daf87f8b"><td class="memTemplParams" colspan="2">template<typename... Ts> </td></tr>
+<tr class="memitem:a9afdaa4d8bbb78938110ada1daf87f8b"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a9afdaa4d8bbb78938110ada1daf87f8b">error_on_value_not_representable_in_fixed_point</a> (const char *function, const char *file, int line, float value, const <a class="el" href="classarm__compute_1_1_i_tensor.xhtml">ITensor</a> *tensor)</td></tr>
+<tr class="memdesc:a9afdaa4d8bbb78938110ada1daf87f8b"><td class="mdescLeft"> </td><td class="mdescRight">Throw an error if the fixed-point value is not representable in the specified Q format. <a href="#a9afdaa4d8bbb78938110ada1daf87f8b">More...</a><br /></td></tr>
+<tr class="separator:a9afdaa4d8bbb78938110ada1daf87f8b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa5191117dc677a74552769b87131b1b6"><td class="memItemLeft" align="right" valign="top">const std::string & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#aa5191117dc677a74552769b87131b1b6">string_from_scheduler_type</a> (<a class="el" href="classarm__compute_1_1_scheduler.xhtml#a1d1cfd8ffb84e947f82999c682b666a7">Scheduler::Type</a> t)</td></tr>
+<tr class="memdesc:aa5191117dc677a74552769b87131b1b6"><td class="mdescLeft"> </td><td class="mdescRight">Convert a <a class="el" href="classarm__compute_1_1_scheduler.xhtml#a1d1cfd8ffb84e947f82999c682b666a7">Scheduler::Type</a> into a string. <a href="#aa5191117dc677a74552769b87131b1b6">More...</a><br /></td></tr>
+<tr class="separator:aa5191117dc677a74552769b87131b1b6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a18d43401e8f84ed020429b41ec4e99f5"><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
+<tr class="memitem:a18d43401e8f84ed020429b41ec4e99f5"><td class="memTemplItemLeft" align="right" valign="top">inline::std::ostream & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a18d43401e8f84ed020429b41ec4e99f5">operator<<</a> (::std::ostream &os, const <a class="el" href="classarm__compute_1_1_dimensions.xhtml">Dimensions</a>< T > &dimensions)</td></tr>
+<tr class="memdesc:a18d43401e8f84ed020429b41ec4e99f5"><td class="mdescLeft"> </td><td class="mdescRight">Formatted output of the <a class="el" href="classarm__compute_1_1_dimensions.xhtml" title="Dimensions with dimensionality. ">Dimensions</a> type. <a href="#a18d43401e8f84ed020429b41ec4e99f5">More...</a><br /></td></tr>
+<tr class="separator:a18d43401e8f84ed020429b41ec4e99f5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8af36ae3a3613112c3a95e57f606359a"><td class="memItemLeft" align="right" valign="top">inline::std::ostream & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a8af36ae3a3613112c3a95e57f606359a">operator<<</a> (::std::ostream &os, const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> &pad_stride_info)</td></tr>
+<tr class="memdesc:a8af36ae3a3613112c3a95e57f606359a"><td class="mdescLeft"> </td><td class="mdescRight">Formatted output of the PadStridInfo type. <a href="#a8af36ae3a3613112c3a95e57f606359a">More...</a><br /></td></tr>
+<tr class="separator:a8af36ae3a3613112c3a95e57f606359a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7929032d41d5f23cd1778a70508d0219"><td class="memItemLeft" align="right" valign="top">inline::std::ostream & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a7929032d41d5f23cd1778a70508d0219">operator<<</a> (::std::ostream &os, const <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> &mode)</td></tr>
+<tr class="memdesc:a7929032d41d5f23cd1778a70508d0219"><td class="mdescLeft"> </td><td class="mdescRight">Formatted output of the BorderMode type. <a href="#a7929032d41d5f23cd1778a70508d0219">More...</a><br /></td></tr>
+<tr class="separator:a7929032d41d5f23cd1778a70508d0219"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a509047aefc691398f1bb60b1f967a98b"><td class="memItemLeft" align="right" valign="top">inline::std::ostream & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a509047aefc691398f1bb60b1f967a98b">operator<<</a> (::std::ostream &os, const <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a> &policy)</td></tr>
+<tr class="memdesc:a509047aefc691398f1bb60b1f967a98b"><td class="mdescLeft"> </td><td class="mdescRight">Formatted output of the InterpolationPolicy type. <a href="#a509047aefc691398f1bb60b1f967a98b">More...</a><br /></td></tr>
+<tr class="separator:a509047aefc691398f1bb60b1f967a98b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4287c6842a60e5f6bf309e55f8813527"><td class="memItemLeft" align="right" valign="top">inline::std::ostream & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a4287c6842a60e5f6bf309e55f8813527">operator<<</a> (::std::ostream &os, const <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> &policy)</td></tr>
+<tr class="memdesc:a4287c6842a60e5f6bf309e55f8813527"><td class="mdescLeft"> </td><td class="mdescRight">Formatted output of the ConversionPolicy type. <a href="#a4287c6842a60e5f6bf309e55f8813527">More...</a><br /></td></tr>
+<tr class="separator:a4287c6842a60e5f6bf309e55f8813527"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9d79efe2673aeb3f9a9160b6a78de50c"><td class="memItemLeft" align="right" valign="top">inline::std::ostream & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a9d79efe2673aeb3f9a9160b6a78de50c">operator<<</a> (::std::ostream &os, const <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml#a56297e0f7b215eea46c818cb7528d9ea">ActivationLayerInfo::ActivationFunction</a> &act_function)</td></tr>
+<tr class="memdesc:a9d79efe2673aeb3f9a9160b6a78de50c"><td class="mdescLeft"> </td><td class="mdescRight">Formatted output of the activation function type. <a href="#a9d79efe2673aeb3f9a9160b6a78de50c">More...</a><br /></td></tr>
+<tr class="separator:a9d79efe2673aeb3f9a9160b6a78de50c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2ab7370aab6e5698990c50c8871fa6fb"><td class="memItemLeft" align="right" valign="top">inline::std::ostream & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a2ab7370aab6e5698990c50c8871fa6fb">operator<<</a> (::std::ostream &os, const <a class="el" href="namespacearm__compute.xhtml#ad4bb8dabdbf8ad75e34220cc666b59ca">NormType</a> &norm_type)</td></tr>
+<tr class="memdesc:a2ab7370aab6e5698990c50c8871fa6fb"><td class="mdescLeft"> </td><td class="mdescRight">Formatted output of the NormType type. <a href="#a2ab7370aab6e5698990c50c8871fa6fb">More...</a><br /></td></tr>
+<tr class="separator:a2ab7370aab6e5698990c50c8871fa6fb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a336cf1e870f467e44c184587a13feeec"><td class="memItemLeft" align="right" valign="top">inline::std::ostream & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a336cf1e870f467e44c184587a13feeec">operator<<</a> (::std::ostream &os, const <a class="el" href="namespacearm__compute.xhtml#a9172da722f0a434e5cc07c0a3c115d93">PoolingType</a> &pool_type)</td></tr>
+<tr class="memdesc:a336cf1e870f467e44c184587a13feeec"><td class="mdescLeft"> </td><td class="mdescRight">Formatted output of the PoolingType type. <a href="#a336cf1e870f467e44c184587a13feeec">More...</a><br /></td></tr>
+<tr class="separator:a336cf1e870f467e44c184587a13feeec"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a295edc9f8caf95838db2c5e251153514"><td class="memItemLeft" align="right" valign="top">inline::std::ostream & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a295edc9f8caf95838db2c5e251153514">operator<<</a> (::std::ostream &os, const <a class="el" href="namespacearm__compute.xhtml#add6426cbf2e057a195846d4ba09a50be">RoundingPolicy</a> &rounding_policy)</td></tr>
+<tr class="memdesc:a295edc9f8caf95838db2c5e251153514"><td class="mdescLeft"> </td><td class="mdescRight">Formatted output of the RoundingPolicy type. <a href="#a295edc9f8caf95838db2c5e251153514">More...</a><br /></td></tr>
+<tr class="separator:a295edc9f8caf95838db2c5e251153514"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a685af15532d70b8682bcc52f06f034f9"><td class="memItemLeft" align="right" valign="top">inline::std::ostream & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a685af15532d70b8682bcc52f06f034f9">operator<<</a> (::std::ostream &os, const <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> &data_type)</td></tr>
+<tr class="memdesc:a685af15532d70b8682bcc52f06f034f9"><td class="mdescLeft"> </td><td class="mdescRight">Formatted output of the DataType type. <a href="#a685af15532d70b8682bcc52f06f034f9">More...</a><br /></td></tr>
+<tr class="separator:a685af15532d70b8682bcc52f06f034f9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3b22e54b0ac0204c3b89aebcd695fa03"><td class="memItemLeft" align="right" valign="top">inline::std::ostream & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a3b22e54b0ac0204c3b89aebcd695fa03">operator<<</a> (::std::ostream &os, const <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58">Format</a> &format)</td></tr>
+<tr class="memdesc:a3b22e54b0ac0204c3b89aebcd695fa03"><td class="mdescLeft"> </td><td class="mdescRight">Formatted output of the Format type. <a href="#a3b22e54b0ac0204c3b89aebcd695fa03">More...</a><br /></td></tr>
+<tr class="separator:a3b22e54b0ac0204c3b89aebcd695fa03"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa66be15c012986ebd4c1934b97e08a36"><td class="memItemLeft" align="right" valign="top">inline::std::ostream & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#aa66be15c012986ebd4c1934b97e08a36">operator<<</a> (::std::ostream &os, const <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455a">Channel</a> &channel)</td></tr>
+<tr class="memdesc:aa66be15c012986ebd4c1934b97e08a36"><td class="mdescLeft"> </td><td class="mdescRight">Formatted output of the Channel type. <a href="#aa66be15c012986ebd4c1934b97e08a36">More...</a><br /></td></tr>
+<tr class="separator:aa66be15c012986ebd4c1934b97e08a36"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af32c4c5cdd0efde09774eb803bc8a0bd"><td class="memItemLeft" align="right" valign="top">inline::std::ostream & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#af32c4c5cdd0efde09774eb803bc8a0bd">operator<<</a> (::std::ostream &os, const <a class="el" href="structarm__compute_1_1_border_size.xhtml">BorderSize</a> &border)</td></tr>
+<tr class="memdesc:af32c4c5cdd0efde09774eb803bc8a0bd"><td class="mdescLeft"> </td><td class="mdescRight">Formatted output of the <a class="el" href="structarm__compute_1_1_border_size.xhtml" title="Container for 2D border size. ">BorderSize</a> type. <a href="#af32c4c5cdd0efde09774eb803bc8a0bd">More...</a><br /></td></tr>
+<tr class="separator:af32c4c5cdd0efde09774eb803bc8a0bd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1379e5f8a8b4640d7a52d901f0539ccd"><td class="memItemLeft" align="right" valign="top">inline::std::istream & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a1379e5f8a8b4640d7a52d901f0539ccd">operator>></a> (::std::istream &is, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> &mode)</td></tr>
+<tr class="memdesc:a1379e5f8a8b4640d7a52d901f0539ccd"><td class="mdescLeft"> </td><td class="mdescRight">Formatted input of the BorderMode type. <a href="#a1379e5f8a8b4640d7a52d901f0539ccd">More...</a><br /></td></tr>
+<tr class="separator:a1379e5f8a8b4640d7a52d901f0539ccd"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a769d636d7a3c7c84579a5f477a18bc9d"><td class="memItemLeft" align="right" valign="top">constexpr size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a769d636d7a3c7c84579a5f477a18bc9d">MAX_DIMS</a> = 6</td></tr>
<tr class="separator:a769d636d7a3c7c84579a5f477a18bc9d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6f13dc0738b4cc6b51ed1e35fe616bd0"><td class="memItemLeft" align="right" valign="top">const std::array< <a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a>, 4 > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a6f13dc0738b4cc6b51ed1e35fe616bd0">exp_tab_qs8</a></td></tr>
+<tr class="memdesc:a6f13dc0738b4cc6b51ed1e35fe616bd0"><td class="mdescLeft"> </td><td class="mdescRight">< Exponent polynomial coefficients for 8 bit fixed point (8 elements) Format is in Q0.7 for all elements <a href="#a6f13dc0738b4cc6b51ed1e35fe616bd0">More...</a><br /></td></tr>
+<tr class="separator:a6f13dc0738b4cc6b51ed1e35fe616bd0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8b29cd747029a70119b7a21b72f56e12"><td class="memItemLeft" align="right" valign="top">const std::array< <a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a>, 4 > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a8b29cd747029a70119b7a21b72f56e12">exp_tabq_qs8</a></td></tr>
+<tr class="memdesc:a8b29cd747029a70119b7a21b72f56e12"><td class="mdescLeft"> </td><td class="mdescRight">Logarithm polynomial coefficients for 8 bit fixed point (8 elements) Format is in Q0.7 for all elements except the first one which is in Q1.6. <a href="#a8b29cd747029a70119b7a21b72f56e12">More...</a><br /></td></tr>
+<tr class="separator:a8b29cd747029a70119b7a21b72f56e12"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af6bad6fafc33437f617e27d063aea07d"><td class="memItemLeft" align="right" valign="top">const std::array< <a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a>, 4 > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#af6bad6fafc33437f617e27d063aea07d">log_tab_qs8</a></td></tr>
+<tr class="memdesc:af6bad6fafc33437f617e27d063aea07d"><td class="mdescLeft"> </td><td class="mdescRight">Logarithm polynomial coefficients for 8 bit fixed point (16 elements) Format is in Q0.7 for all elements except the first one which is in Q1.6. <a href="#af6bad6fafc33437f617e27d063aea07d">More...</a><br /></td></tr>
+<tr class="separator:af6bad6fafc33437f617e27d063aea07d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a44e335b1163d294dcd6efc8e51565135"><td class="memItemLeft" align="right" valign="top">const std::array< <a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a>, 4 > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a44e335b1163d294dcd6efc8e51565135">log_tabq_qs8</a></td></tr>
+<tr class="separator:a44e335b1163d294dcd6efc8e51565135"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a869945609357fa552d94eb16f7aad4e9"><td class="memItemLeft" align="right" valign="top">const std::array< float32x4_t, 8 > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a869945609357fa552d94eb16f7aad4e9">exp_tab</a></td></tr>
<tr class="separator:a869945609357fa552d94eb16f7aad4e9"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a48fb9cf404e8f7043235bf14105c9793"><td class="memItemLeft" align="right" valign="top">const std::array< float32x4_t, 8 > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute.xhtml#a48fb9cf404e8f7043235bf14105c9793">log_tab</a></td></tr>
@@ -2672,7 +3342,7 @@
</table>
</div><div class="memdoc">
-<p>Definition at line <a class="el" href="_tensor_8h_source.xhtml#l00063">63</a> of file <a class="el" href="_tensor_8h_source.xhtml">Tensor.h</a>.</p>
+<p>Definition at line <a class="el" href="arm__compute_2runtime_2_tensor_8h_source.xhtml#l00063">63</a> of file <a class="el" href="arm__compute_2runtime_2_tensor_8h_source.xhtml">Tensor.h</a>.</p>
</div>
</div>
@@ -2756,7 +3426,7 @@
</table>
</div><div class="memdoc">
-<p>Definition at line <a class="el" href="_types_8h_source.xhtml#l00266">266</a> of file <a class="el" href="_types_8h_source.xhtml">Types.h</a>.</p>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00277">277</a> of file <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml">Types.h</a>.</p>
</div>
</div>
@@ -2956,12 +3626,12 @@
</div>
</div>
-<a class="anchor" id="a9d037379f22f90d871d3fa4ad337437a"></a>
+<a class="anchor" id="a0604c803e41880a4a16408efc4e6a69b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">using <a class="el" href="namespacearm__compute.xhtml#a9d037379f22f90d871d3fa4ad337437a">NEScheduler</a> = <a class="el" href="classarm__compute_1_1_c_p_p_scheduler.xhtml">CPPScheduler</a></td>
+ <td class="memname">using <a class="el" href="namespacearm__compute.xhtml#a0604c803e41880a4a16408efc4e6a69b">NEScheduler</a> = <a class="el" href="classarm__compute_1_1_scheduler.xhtml">Scheduler</a></td>
</tr>
</table>
</div><div class="memdoc">
@@ -3076,7 +3746,311 @@
</table>
</div><div class="memdoc">
-<p>Definition at line <a class="el" href="_types_8h_source.xhtml#l00191">191</a> of file <a class="el" href="_types_8h_source.xhtml">Types.h</a>.</p>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00201">201</a> of file <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml">Types.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a1521eea74b97de8f2df9304e44179400"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">using <a class="el" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> = int16_t</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>16 bit fixed point scalar value </p>
+
+<p>Definition at line <a class="el" href="arm__compute_2core_2_fixed_point_8h_source.xhtml#l00030">30</a> of file <a class="el" href="arm__compute_2core_2_fixed_point_8h_source.xhtml">FixedPoint.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a82c56f0856f56d430393e6a00baee983"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">using <a class="el" href="namespacearm__compute.xhtml#a82c56f0856f56d430393e6a00baee983">qint16x4_t</a> = int16x4_t</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>16 bit fixed point vector with 4 elements </p>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8h_source.xhtml#l00041">41</a> of file <a class="el" href="_n_e_fixed_point_8h_source.xhtml">NEFixedPoint.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8d57e0f4f122442011213667168ef538"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">using <a class="el" href="namespacearm__compute.xhtml#a8d57e0f4f122442011213667168ef538">qint16x4x2_t</a> = int16x4x2_t</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>16 bit fixed point vector with 8 elements </p>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8h_source.xhtml#l00042">42</a> of file <a class="el" href="_n_e_fixed_point_8h_source.xhtml">NEFixedPoint.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a63f034ee885f20111e7f5d44e48e6d93"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">using <a class="el" href="namespacearm__compute.xhtml#a63f034ee885f20111e7f5d44e48e6d93">qint16x4x3_t</a> = int16x4x3_t</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>16 bit fixed point vector with 12 elements </p>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8h_source.xhtml#l00043">43</a> of file <a class="el" href="_n_e_fixed_point_8h_source.xhtml">NEFixedPoint.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8525b18a2f34c3497bbfbd0e7c3a7875"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">using <a class="el" href="namespacearm__compute.xhtml#a8525b18a2f34c3497bbfbd0e7c3a7875">qint16x4x4_t</a> = int16x4x4_t</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>16 bit fixed point vector with 16 elements </p>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8h_source.xhtml#l00044">44</a> of file <a class="el" href="_n_e_fixed_point_8h_source.xhtml">NEFixedPoint.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4e15143176bfacdde8b06f4bb0b67427"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">using <a class="el" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> = int16x8_t</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>16 bit fixed point vector with 8 elements </p>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8h_source.xhtml#l00045">45</a> of file <a class="el" href="_n_e_fixed_point_8h_source.xhtml">NEFixedPoint.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3c4099e91913f28017e1f57b8e5cbf9f"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">using <a class="el" href="namespacearm__compute.xhtml#a3c4099e91913f28017e1f57b8e5cbf9f">qint16x8x2_t</a> = int16x8x2_t</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>16 bit fixed point vector with 16 elements </p>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8h_source.xhtml#l00046">46</a> of file <a class="el" href="_n_e_fixed_point_8h_source.xhtml">NEFixedPoint.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a65e109cf43ade8a2a3c57a1120b90b05"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">using <a class="el" href="namespacearm__compute.xhtml#a65e109cf43ade8a2a3c57a1120b90b05">qint16x8x3_t</a> = int16x8x3_t</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>16 bit fixed point vector with 24 elements </p>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8h_source.xhtml#l00047">47</a> of file <a class="el" href="_n_e_fixed_point_8h_source.xhtml">NEFixedPoint.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6bc1e8d62f1055278d8f05454faa422f"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">using <a class="el" href="namespacearm__compute.xhtml#a6bc1e8d62f1055278d8f05454faa422f">qint16x8x4_t</a> = int16x8x4_t</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>16 bit fixed point vector with 32 elements </p>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8h_source.xhtml#l00048">48</a> of file <a class="el" href="_n_e_fixed_point_8h_source.xhtml">NEFixedPoint.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa06c95f9976f3729316d689b4419089f"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">using <a class="el" href="namespacearm__compute.xhtml#aa06c95f9976f3729316d689b4419089f">qint32_t</a> = int32_t</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>32 bit fixed point scalar value </p>
+
+<p>Definition at line <a class="el" href="arm__compute_2core_2_fixed_point_8h_source.xhtml#l00031">31</a> of file <a class="el" href="arm__compute_2core_2_fixed_point_8h_source.xhtml">FixedPoint.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4c3f681c30c9398c45bc3cd5dc4f038a"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">using <a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> = int8_t</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point scalar value </p>
+
+<p>Definition at line <a class="el" href="arm__compute_2core_2_fixed_point_8h_source.xhtml#l00029">29</a> of file <a class="el" href="arm__compute_2core_2_fixed_point_8h_source.xhtml">FixedPoint.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5b99ed49abd6b7bf13dafdd17bcef855"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">using <a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> = int8x16_t</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point vector with 16 elements </p>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8h_source.xhtml#l00037">37</a> of file <a class="el" href="_n_e_fixed_point_8h_source.xhtml">NEFixedPoint.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a09108711e0c18d4e9811ea4597d573b1"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">using <a class="el" href="namespacearm__compute.xhtml#a09108711e0c18d4e9811ea4597d573b1">qint8x16x2_t</a> = int8x16x2_t</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point vector with 32 elements </p>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8h_source.xhtml#l00038">38</a> of file <a class="el" href="_n_e_fixed_point_8h_source.xhtml">NEFixedPoint.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7e175277ee7de6a5aeb5cd8916dbb346"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">using <a class="el" href="namespacearm__compute.xhtml#a7e175277ee7de6a5aeb5cd8916dbb346">qint8x16x3_t</a> = int8x16x3_t</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point vector with 48 elements </p>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8h_source.xhtml#l00039">39</a> of file <a class="el" href="_n_e_fixed_point_8h_source.xhtml">NEFixedPoint.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3c4b33603ffff71e9f02c4be1a2f14d5"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">using <a class="el" href="namespacearm__compute.xhtml#a3c4b33603ffff71e9f02c4be1a2f14d5">qint8x16x4_t</a> = int8x16x4_t</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point vector with 64 elements </p>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8h_source.xhtml#l00040">40</a> of file <a class="el" href="_n_e_fixed_point_8h_source.xhtml">NEFixedPoint.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a16a1bee14f1db073f75caa76dacf5078"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">using <a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> = int8x8_t</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point vector with 8 elements </p>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8h_source.xhtml#l00033">33</a> of file <a class="el" href="_n_e_fixed_point_8h_source.xhtml">NEFixedPoint.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ace2375b626995858a398e1ffb3108f14"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">using <a class="el" href="namespacearm__compute.xhtml#ace2375b626995858a398e1ffb3108f14">qint8x8x2_t</a> = int8x8x2_t</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point vector with 16 elements </p>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8h_source.xhtml#l00034">34</a> of file <a class="el" href="_n_e_fixed_point_8h_source.xhtml">NEFixedPoint.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a252c74fae9a9238ef7c23d306e670706"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">using <a class="el" href="namespacearm__compute.xhtml#a252c74fae9a9238ef7c23d306e670706">qint8x8x3_t</a> = int8x8x3_t</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point vector with 24 elements </p>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8h_source.xhtml#l00035">35</a> of file <a class="el" href="_n_e_fixed_point_8h_source.xhtml">NEFixedPoint.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a01ae65c0a0736d4293e657a66bde1538"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">using <a class="el" href="namespacearm__compute.xhtml#a01ae65c0a0736d4293e657a66bde1538">qint8x8x4_t</a> = int8x8x4_t</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point vector with 32 elements </p>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8h_source.xhtml#l00036">36</a> of file <a class="el" href="_n_e_fixed_point_8h_source.xhtml">NEFixedPoint.h</a>.</p>
</div>
</div>
@@ -3163,8 +4137,8 @@
</td></tr>
</table>
-<p>Definition at line <a class="el" href="_types_8h_source.xhtml#l00209">209</a> of file <a class="el" href="_types_8h_source.xhtml">Types.h</a>.</p>
-<div class="fragment"><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <a class="code" href="namespacearm__compute.xhtml#a2d8a00f1d80a53ce8f75fa929c873202a856d68c521c4c85363f54d95a33b7532">BILINEAR_OLD_NEW</a>,</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <a class="code" href="namespacearm__compute.xhtml#a2d8a00f1d80a53ce8f75fa929c873202a731cb35d2d520920db9ab20dfc5edc64">BILINEAR_SCHARR</a></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> };</div><div class="ttc" id="namespacearm__compute_xhtml_a2d8a00f1d80a53ce8f75fa929c873202a856d68c521c4c85363f54d95a33b7532"><div class="ttname"><a href="namespacearm__compute.xhtml#a2d8a00f1d80a53ce8f75fa929c873202a856d68c521c4c85363f54d95a33b7532">arm_compute::BilinearInterpolation::BILINEAR_OLD_NEW</a></div></div>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00219">219</a> of file <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml">Types.h</a>.</p>
+<div class="fragment"><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> {</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <a class="code" href="namespacearm__compute.xhtml#a2d8a00f1d80a53ce8f75fa929c873202a856d68c521c4c85363f54d95a33b7532">BILINEAR_OLD_NEW</a>,</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <a class="code" href="namespacearm__compute.xhtml#a2d8a00f1d80a53ce8f75fa929c873202a731cb35d2d520920db9ab20dfc5edc64">BILINEAR_SCHARR</a></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> };</div><div class="ttc" id="namespacearm__compute_xhtml_a2d8a00f1d80a53ce8f75fa929c873202a856d68c521c4c85363f54d95a33b7532"><div class="ttname"><a href="namespacearm__compute.xhtml#a2d8a00f1d80a53ce8f75fa929c873202a856d68c521c4c85363f54d95a33b7532">arm_compute::BilinearInterpolation::BILINEAR_OLD_NEW</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a2d8a00f1d80a53ce8f75fa929c873202a731cb35d2d520920db9ab20dfc5edc64"><div class="ttname"><a href="namespacearm__compute.xhtml#a2d8a00f1d80a53ce8f75fa929c873202a731cb35d2d520920db9ab20dfc5edc64">arm_compute::BilinearInterpolation::BILINEAR_SCHARR</a></div></div>
</div><!-- fragment -->
</div>
@@ -3200,8 +4174,8 @@
</td></tr>
</table>
-<p>Definition at line <a class="el" href="_types_8h_source.xhtml#l00121">121</a> of file <a class="el" href="_types_8h_source.xhtml">Types.h</a>.</p>
-<div class="fragment"><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <a class="code" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a0db45d2a4141101bdfe48e3314cfbca3">UNDEFINED</a>, </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <a class="code" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a8d6b5cada83510220f59e00ce86d4d92">CONSTANT</a>, </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <a class="code" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a4ef59320fbe90fe47d40f1f71e4c5daa">REPLICATE</a> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> };</div><div class="ttc" id="namespacearm__compute_xhtml_a15a05537a472ee742404821851529327a0db45d2a4141101bdfe48e3314cfbca3"><div class="ttname"><a href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a0db45d2a4141101bdfe48e3314cfbca3">arm_compute::BorderMode::UNDEFINED</a></div><div class="ttdoc">Borders are left undefined. </div></div>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00123">123</a> of file <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml">Types.h</a>.</p>
+<div class="fragment"><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <a class="code" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a0db45d2a4141101bdfe48e3314cfbca3">UNDEFINED</a>, </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <a class="code" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a8d6b5cada83510220f59e00ce86d4d92">CONSTANT</a>, </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <a class="code" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a4ef59320fbe90fe47d40f1f71e4c5daa">REPLICATE</a> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> };</div><div class="ttc" id="namespacearm__compute_xhtml_a15a05537a472ee742404821851529327a0db45d2a4141101bdfe48e3314cfbca3"><div class="ttname"><a href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a0db45d2a4141101bdfe48e3314cfbca3">arm_compute::BorderMode::UNDEFINED</a></div><div class="ttdoc">Borders are left undefined. </div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a15a05537a472ee742404821851529327a4ef59320fbe90fe47d40f1f71e4c5daa"><div class="ttname"><a href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a4ef59320fbe90fe47d40f1f71e4c5daa">arm_compute::BorderMode::REPLICATE</a></div><div class="ttdoc">Pixels outside the image are assumed to have the same value as the closest image pixel. </div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a15a05537a472ee742404821851529327a8d6b5cada83510220f59e00ce86d4d92"><div class="ttname"><a href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a8d6b5cada83510220f59e00ce86d4d92">arm_compute::BorderMode::CONSTANT</a></div><div class="ttdoc">Pixels outside the image are assumed to have a constant value. </div></div>
</div><!-- fragment -->
@@ -3265,8 +4239,8 @@
</td></tr>
</table>
-<p>Definition at line <a class="el" href="_types_8h_source.xhtml#l00293">293</a> of file <a class="el" href="_types_8h_source.xhtml">Types.h</a>.</p>
-<div class="fragment"><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a696b031073e74bf2cb98e5ef201d4aa3">UNKNOWN</a>, </div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa9c5959e6f08f10d0edbadf5be1f33c53">C0</a>, </div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa1a2ddc2db4693cfd16d534cde5572cc1">C1</a>, </div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aaf1a543f5a2c5d49bc5dde298fcf716e4">C2</a>, </div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa3abe124ecc82bf2c2e22e6058f38c50c">C3</a>, </div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aae1e1d3d40573127e9ee0480caf1283d6">R</a>, </div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aadfcf28d0734569a6a693bc8194de62bf">G</a>, </div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571">B</a>, </div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa7fc56270e7a70fa81a5935b72eacbe29">A</a>, </div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa57cec4137b614c87cb4e24a3d003a3e0">Y</a>, </div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa4c614360da93c0a041b22e537de151eb">U</a>, </div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa5206560a306a2e085a437fd258eb57ce">V</a> </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> };</div><div class="ttc" id="namespacearm__compute_xhtml_a1ce9b523fd4f3b5bbcadcd796183455aa7fc56270e7a70fa81a5935b72eacbe29"><div class="ttname"><a href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa7fc56270e7a70fa81a5935b72eacbe29">arm_compute::Channel::A</a></div><div class="ttdoc">Alpha channel. </div></div>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00304">304</a> of file <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml">Types.h</a>.</p>
+<div class="fragment"><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> {</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a696b031073e74bf2cb98e5ef201d4aa3">UNKNOWN</a>, </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa9c5959e6f08f10d0edbadf5be1f33c53">C0</a>, </div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa1a2ddc2db4693cfd16d534cde5572cc1">C1</a>, </div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aaf1a543f5a2c5d49bc5dde298fcf716e4">C2</a>, </div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa3abe124ecc82bf2c2e22e6058f38c50c">C3</a>, </div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aae1e1d3d40573127e9ee0480caf1283d6">R</a>, </div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aadfcf28d0734569a6a693bc8194de62bf">G</a>, </div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571">B</a>, </div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa7fc56270e7a70fa81a5935b72eacbe29">A</a>, </div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa57cec4137b614c87cb4e24a3d003a3e0">Y</a>, </div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa4c614360da93c0a041b22e537de151eb">U</a>, </div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa5206560a306a2e085a437fd258eb57ce">V</a> </div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> };</div><div class="ttc" id="namespacearm__compute_xhtml_a1ce9b523fd4f3b5bbcadcd796183455aa7fc56270e7a70fa81a5935b72eacbe29"><div class="ttname"><a href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa7fc56270e7a70fa81a5935b72eacbe29">arm_compute::Channel::A</a></div><div class="ttdoc">Alpha channel. </div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a1ce9b523fd4f3b5bbcadcd796183455aa1a2ddc2db4693cfd16d534cde5572cc1"><div class="ttname"><a href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa1a2ddc2db4693cfd16d534cde5572cc1">arm_compute::Channel::C1</a></div><div class="ttdoc">Second channel (used by formats with unknown channel types). </div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a1ce9b523fd4f3b5bbcadcd796183455aa5206560a306a2e085a437fd258eb57ce"><div class="ttname"><a href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa5206560a306a2e085a437fd258eb57ce">arm_compute::Channel::V</a></div><div class="ttdoc">Cr/V/Value channel. </div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571"><div class="ttname"><a href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571">arm_compute::Channel::B</a></div><div class="ttdoc">Blue channel. </div></div>
@@ -3309,8 +4283,8 @@
</td></tr>
</table>
-<p>Definition at line <a class="el" href="_types_8h_source.xhtml#l00194">194</a> of file <a class="el" href="_types_8h_source.xhtml">Types.h</a>.</p>
-<div class="fragment"><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <a class="code" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6fae1c8555fcf0ea2bb648a6fd527d658c0">WRAP</a>, </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <a class="code" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6fa4729d95f983955f0d93a30179deb2b86">SATURATE</a> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> };</div><div class="ttc" id="namespacearm__compute_xhtml_a82b8ac759c804bc1fb4e2d21e178fb6fae1c8555fcf0ea2bb648a6fd527d658c0"><div class="ttname"><a href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6fae1c8555fcf0ea2bb648a6fd527d658c0">arm_compute::ConvertPolicy::WRAP</a></div><div class="ttdoc">Wrap around. </div></div>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00204">204</a> of file <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml">Types.h</a>.</p>
+<div class="fragment"><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <a class="code" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6fae1c8555fcf0ea2bb648a6fd527d658c0">WRAP</a>, </div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <a class="code" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6fa4729d95f983955f0d93a30179deb2b86">SATURATE</a> </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> };</div><div class="ttc" id="namespacearm__compute_xhtml_a82b8ac759c804bc1fb4e2d21e178fb6fae1c8555fcf0ea2bb648a6fd527d658c0"><div class="ttname"><a href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6fae1c8555fcf0ea2bb648a6fd527d658c0">arm_compute::ConvertPolicy::WRAP</a></div><div class="ttdoc">Wrap around. </div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a82b8ac759c804bc1fb4e2d21e178fb6fa4729d95f983955f0d93a30179deb2b86"><div class="ttname"><a href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6fa4729d95f983955f0d93a30179deb2b86">arm_compute::ConvertPolicy::SATURATE</a></div><div class="ttdoc">Saturate. </div></div>
</div><!-- fragment -->
</div>
@@ -3341,10 +4315,14 @@
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="ad8ed01ff3ff33333d8e19db4d2818bb6aafb0fced528eaac5fe170b763cda5975"></a>S8 </td><td class="fielddoc">
</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="ad8ed01ff3ff33333d8e19db4d2818bb6a11cde4d3551db3f9498d339a67189543"></a>QS8 </td><td class="fielddoc">
+</td></tr>
<tr><td class="fieldname"><a class="anchor" id="ad8ed01ff3ff33333d8e19db4d2818bb6aef9ef3ebca4d2b64b6ec83808bafa5f2"></a>U16 </td><td class="fielddoc">
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="ad8ed01ff3ff33333d8e19db4d2818bb6a6e0b0886efb94aec797f6b830329b72c"></a>S16 </td><td class="fielddoc">
</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="ad8ed01ff3ff33333d8e19db4d2818bb6a48d877702a2957f5a932c43a357866f9"></a>QS16 </td><td class="fielddoc">
+</td></tr>
<tr><td class="fieldname"><a class="anchor" id="ad8ed01ff3ff33333d8e19db4d2818bb6ac8bd5bedff8ef192d39a962afc0e19ee"></a>U32 </td><td class="fielddoc">
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="ad8ed01ff3ff33333d8e19db4d2818bb6aa1e28eee0339658d39a8b4d325b56e9c"></a>S32 </td><td class="fielddoc">
@@ -3363,8 +4341,10 @@
</td></tr>
</table>
-<p>Definition at line <a class="el" href="_types_8h_source.xhtml#l00060">60</a> of file <a class="el" href="_types_8h_source.xhtml">Types.h</a>.</p>
-<div class="fragment"><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a696b031073e74bf2cb98e5ef201d4aa3">UNKNOWN</a>,</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6669348b484e3008dca2bfa8e85e40b5">U8</a>,</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6aafb0fced528eaac5fe170b763cda5975">S8</a>,</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58aef9ef3ebca4d2b64b6ec83808bafa5f2">U16</a>,</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6e0b0886efb94aec797f6b830329b72c">S16</a>,</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58ac8bd5bedff8ef192d39a962afc0e19ee">U32</a>,</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58aa1e28eee0339658d39a8b4d325b56e9c">S32</a>,</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a31d65cccd6593e4101db93fb878abcaa">U64</a>,</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <a class="code" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a115dca124dc6423c7a400b8a8a0270cc">S64</a>,</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a56d8353718e6fdc78b8d69078a2cdb94">F16</a>,</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a44ad4ef5a76e6aa6fb3e3fa079a54fda">F32</a>,</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <a class="code" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a1ad5f6f3069070ec4cbbdc94d5e61e0e">F64</a>,</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <a class="code" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6abd7ef6d4f35bc7d05c559b65032f15d1">SIZET</a></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> };</div><div class="ttc" id="namespacearm__compute_xhtml_ab4e88c89b3b7ea1735996cc4def22d58a6669348b484e3008dca2bfa8e85e40b5"><div class="ttname"><a href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6669348b484e3008dca2bfa8e85e40b5">arm_compute::Format::U8</a></div><div class="ttdoc">Unknown image format. </div></div>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00060">60</a> of file <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml">Types.h</a>.</p>
+<div class="fragment"><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a696b031073e74bf2cb98e5ef201d4aa3">UNKNOWN</a>,</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6669348b484e3008dca2bfa8e85e40b5">U8</a>,</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6aafb0fced528eaac5fe170b763cda5975">S8</a>,</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <a class="code" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a11cde4d3551db3f9498d339a67189543">QS8</a>,</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58aef9ef3ebca4d2b64b6ec83808bafa5f2">U16</a>,</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6e0b0886efb94aec797f6b830329b72c">S16</a>,</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <a class="code" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a48d877702a2957f5a932c43a357866f9">QS16</a>,</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58ac8bd5bedff8ef192d39a962afc0e19ee">U32</a>,</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58aa1e28eee0339658d39a8b4d325b56e9c">S32</a>,</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <a class="code" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a31d65cccd6593e4101db93fb878abcaa">U64</a>,</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <a class="code" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a115dca124dc6423c7a400b8a8a0270cc">S64</a>,</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a56d8353718e6fdc78b8d69078a2cdb94">F16</a>,</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a44ad4ef5a76e6aa6fb3e3fa079a54fda">F32</a>,</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a1ad5f6f3069070ec4cbbdc94d5e61e0e">F64</a>,</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <a class="code" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6abd7ef6d4f35bc7d05c559b65032f15d1">SIZET</a></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> };</div><div class="ttc" id="namespacearm__compute_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a48d877702a2957f5a932c43a357866f9"><div class="ttname"><a href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a48d877702a2957f5a932c43a357866f9">arm_compute::DataType::QS16</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a11cde4d3551db3f9498d339a67189543"><div class="ttname"><a href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a11cde4d3551db3f9498d339a67189543">arm_compute::DataType::QS8</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_ab4e88c89b3b7ea1735996cc4def22d58a6669348b484e3008dca2bfa8e85e40b5"><div class="ttname"><a href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6669348b484e3008dca2bfa8e85e40b5">arm_compute::Format::U8</a></div><div class="ttdoc">Unknown image format. </div></div>
<div class="ttc" id="namespacearm__compute_xhtml_ab4e88c89b3b7ea1735996cc4def22d58a44ad4ef5a76e6aa6fb3e3fa079a54fda"><div class="ttname"><a href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a44ad4ef5a76e6aa6fb3e3fa079a54fda">arm_compute::Format::F32</a></div><div class="ttdoc">1 channel, 1 F16 per channel </div></div>
<div class="ttc" id="namespacearm__compute_xhtml_ab4e88c89b3b7ea1735996cc4def22d58aef9ef3ebca4d2b64b6ec83808bafa5f2"><div class="ttname"><a href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58aef9ef3ebca4d2b64b6ec83808bafa5f2">arm_compute::Format::U16</a></div><div class="ttdoc">1 channel, 1 S16 per channel </div></div>
<div class="ttc" id="namespacearm__compute_xhtml_ab4e88c89b3b7ea1735996cc4def22d58a696b031073e74bf2cb98e5ef201d4aa3"><div class="ttname"><a href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a696b031073e74bf2cb98e5ef201d4aa3">arm_compute::Format::UNKNOWN</a></div></div>
@@ -3409,12 +4389,54 @@
</td></tr>
</table>
-<p>Definition at line <a class="el" href="_types_8h_source.xhtml#l00361">361</a> of file <a class="el" href="_types_8h_source.xhtml">Types.h</a>.</p>
-<div class="fragment"><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> {</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <a class="code" href="namespacearm__compute.xhtml#a1fece1bd804e64f39f602d1c3969849aa56c1e354d36beb85b0d881c5b2e24cbe">FLOOR</a>, </div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <a class="code" href="namespacearm__compute.xhtml#a1fece1bd804e64f39f602d1c3969849aa5bdce8e6d9dc3efbbd31e90a8a181dff">CEIL</a> </div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> };</div><div class="ttc" id="namespacearm__compute_xhtml_a1fece1bd804e64f39f602d1c3969849aa5bdce8e6d9dc3efbbd31e90a8a181dff"><div class="ttname"><a href="namespacearm__compute.xhtml#a1fece1bd804e64f39f602d1c3969849aa5bdce8e6d9dc3efbbd31e90a8a181dff">arm_compute::DimensionRoundingType::CEIL</a></div><div class="ttdoc">Ceil rounding. </div></div>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00372">372</a> of file <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml">Types.h</a>.</p>
+<div class="fragment"><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> {</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <a class="code" href="namespacearm__compute.xhtml#a1fece1bd804e64f39f602d1c3969849aa56c1e354d36beb85b0d881c5b2e24cbe">FLOOR</a>, </div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <a class="code" href="namespacearm__compute.xhtml#a1fece1bd804e64f39f602d1c3969849aa5bdce8e6d9dc3efbbd31e90a8a181dff">CEIL</a> </div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> };</div><div class="ttc" id="namespacearm__compute_xhtml_a1fece1bd804e64f39f602d1c3969849aa5bdce8e6d9dc3efbbd31e90a8a181dff"><div class="ttname"><a href="namespacearm__compute.xhtml#a1fece1bd804e64f39f602d1c3969849aa5bdce8e6d9dc3efbbd31e90a8a181dff">arm_compute::DimensionRoundingType::CEIL</a></div><div class="ttdoc">Ceil rounding. </div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a1fece1bd804e64f39f602d1c3969849aa56c1e354d36beb85b0d881c5b2e24cbe"><div class="ttname"><a href="namespacearm__compute.xhtml#a1fece1bd804e64f39f602d1c3969849aa56c1e354d36beb85b0d881c5b2e24cbe">arm_compute::DimensionRoundingType::FLOOR</a></div><div class="ttdoc">Floor rounding. </div></div>
</div><!-- fragment -->
</div>
</div>
+<a class="anchor" id="afa20b6a7f4383003babd690f026f22dc"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="namespacearm__compute.xhtml#afa20b6a7f4383003babd690f026f22dc">FixedPointOp</a></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">strong</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Fixed point operation. </p>
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="afa20b6a7f4383003babd690f026f22dca8c670f8c37b95e1ed14a0ce414b049c7"></a>EXP </td><td class="fielddoc">
+<p>Exponential. </p>
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="afa20b6a7f4383003babd690f026f22dca4b5ffcdaf38ce4d463171f5c977c5ab3"></a>LOG </td><td class="fielddoc">
+<p>Logarithm. </p>
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="afa20b6a7f4383003babd690f026f22dca59c58364795af22cad54630be156712b"></a>INV_SQRT </td><td class="fielddoc">
+<p>Inverse square root. </p>
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="afa20b6a7f4383003babd690f026f22dca4d98346f3d5cc5fa5666f0715abf25b1"></a>RECIPROCAL </td><td class="fielddoc">
+<p>Reciprocal. </p>
+</td></tr>
+</table>
+
+<p>Definition at line <a class="el" href="tests_2_types_8h_source.xhtml#l00029">29</a> of file <a class="el" href="tests_2_types_8h_source.xhtml">Types.h</a>.</p>
+<div class="fragment"><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <a class="code" href="namespacearm__compute.xhtml#afa20b6a7f4383003babd690f026f22dca8c670f8c37b95e1ed14a0ce414b049c7">EXP</a>, </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <a class="code" href="namespacearm__compute.xhtml#afa20b6a7f4383003babd690f026f22dca4b5ffcdaf38ce4d463171f5c977c5ab3">LOG</a>, </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <a class="code" href="namespacearm__compute.xhtml#afa20b6a7f4383003babd690f026f22dca59c58364795af22cad54630be156712b">INV_SQRT</a>, </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <a class="code" href="namespacearm__compute.xhtml#afa20b6a7f4383003babd690f026f22dca4d98346f3d5cc5fa5666f0715abf25b1">RECIPROCAL</a> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> };</div><div class="ttc" id="namespacearm__compute_xhtml_afa20b6a7f4383003babd690f026f22dca4b5ffcdaf38ce4d463171f5c977c5ab3"><div class="ttname"><a href="namespacearm__compute.xhtml#afa20b6a7f4383003babd690f026f22dca4b5ffcdaf38ce4d463171f5c977c5ab3">arm_compute::FixedPointOp::LOG</a></div><div class="ttdoc">Logarithm. </div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_afa20b6a7f4383003babd690f026f22dca8c670f8c37b95e1ed14a0ce414b049c7"><div class="ttname"><a href="namespacearm__compute.xhtml#afa20b6a7f4383003babd690f026f22dca8c670f8c37b95e1ed14a0ce414b049c7">arm_compute::FixedPointOp::EXP</a></div><div class="ttdoc">Exponential. </div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_afa20b6a7f4383003babd690f026f22dca59c58364795af22cad54630be156712b"><div class="ttname"><a href="namespacearm__compute.xhtml#afa20b6a7f4383003babd690f026f22dca59c58364795af22cad54630be156712b">arm_compute::FixedPointOp::INV_SQRT</a></div><div class="ttdoc">Inverse square root. </div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_afa20b6a7f4383003babd690f026f22dca4d98346f3d5cc5fa5666f0715abf25b1"><div class="ttname"><a href="namespacearm__compute.xhtml#afa20b6a7f4383003babd690f026f22dca4d98346f3d5cc5fa5666f0715abf25b1">arm_compute::FixedPointOp::RECIPROCAL</a></div><div class="ttdoc">Reciprocal. </div></div>
+</div><!-- fragment -->
+</div>
+</div>
<a class="anchor" id="ab4e88c89b3b7ea1735996cc4def22d58"></a>
<div class="memitem">
<div class="memproto">
@@ -3488,7 +4510,7 @@
</td></tr>
</table>
-<p>Definition at line <a class="el" href="_types_8h_source.xhtml#l00038">38</a> of file <a class="el" href="_types_8h_source.xhtml">Types.h</a>.</p>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00038">38</a> of file <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml">Types.h</a>.</p>
<div class="fragment"><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a696b031073e74bf2cb98e5ef201d4aa3">UNKNOWN</a>, </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6669348b484e3008dca2bfa8e85e40b5">U8</a>, </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6e0b0886efb94aec797f6b830329b72c">S16</a>, </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58aef9ef3ebca4d2b64b6ec83808bafa5f2">U16</a>, </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58aa1e28eee0339658d39a8b4d325b56e9c">S32</a>, </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58ac8bd5bedff8ef192d39a962afc0e19ee">U32</a>, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a56d8353718e6fdc78b8d69078a2cdb94">F16</a>, </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a44ad4ef5a76e6aa6fb3e3fa079a54fda">F32</a>, </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a079eb95759d2ad31254f659d63651825">UV88</a>, </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a30ff380a3be74628024063a99fba10f0">RGB888</a>, </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a165f06116e7b8d9b2481dfc805db4619">RGBA8888</a>, </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a11cfa56ee0ddbbc30a2fd189d7475f4c">YUV444</a>, </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a481e7a6945eb9f23e87f2de780b2e164">YUYV422</a>, </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a202f5d8c2c70d31048154d8b8b28e755">NV12</a>, </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a8e9f6aa1af7e0abbc7e64521e6ffe1b4">NV21</a>, </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58ab08f0cb36474118c5bbc03b3a172a778">IYUV</a>, </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58af557448a61ad2927194f63442e131dfa">UYVY422</a> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> };</div><div class="ttc" id="namespacearm__compute_xhtml_ab4e88c89b3b7ea1735996cc4def22d58af557448a61ad2927194f63442e131dfa"><div class="ttname"><a href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58af557448a61ad2927194f63442e131dfa">arm_compute::Format::UYVY422</a></div><div class="ttdoc">A 3 plane of 8-bit 4:2:0 sampled Y, U, V planes. </div></div>
<div class="ttc" id="namespacearm__compute_xhtml_ab4e88c89b3b7ea1735996cc4def22d58a6669348b484e3008dca2bfa8e85e40b5"><div class="ttname"><a href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6669348b484e3008dca2bfa8e85e40b5">arm_compute::Format::U8</a></div><div class="ttdoc">Unknown image format. </div></div>
<div class="ttc" id="namespacearm__compute_xhtml_ab4e88c89b3b7ea1735996cc4def22d58a44ad4ef5a76e6aa6fb3e3fa079a54fda"><div class="ttname"><a href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a44ad4ef5a76e6aa6fb3e3fa079a54fda">arm_compute::Format::F32</a></div><div class="ttdoc">1 channel, 1 F16 per channel </div></div>
@@ -3509,6 +4531,53 @@
</div><!-- fragment -->
</div>
</div>
+<a class="anchor" id="a735ac6c2a02e320969625308810444f3"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="namespacearm__compute.xhtml#a735ac6c2a02e320969625308810444f3">GPUTarget</a></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">strong</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Available GPU Targets. </p>
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="a735ac6c2a02e320969625308810444f3a57a3b40730a5af7ea3e13eb4bba56d82"></a>GPU_ARCH_MASK </td><td class="fielddoc">
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="a735ac6c2a02e320969625308810444f3afa362f4daec88442a387ff7cda411a38"></a>MIDGARD </td><td class="fielddoc">
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="a735ac6c2a02e320969625308810444f3aa78cc0fd1cab24af0fad71dc4c256f8e"></a>BIFROST </td><td class="fielddoc">
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="a735ac6c2a02e320969625308810444f3a6855a4342969d2b58c96d95385d6e673"></a>T600 </td><td class="fielddoc">
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="a735ac6c2a02e320969625308810444f3a664a94fa85b127eabc7bed25091843fd"></a>T700 </td><td class="fielddoc">
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="a735ac6c2a02e320969625308810444f3aae926a8537ded0221329aa9a89b84048"></a>T800 </td><td class="fielddoc">
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="a735ac6c2a02e320969625308810444f3a0a91b0ff027767625b7d1a924e10c298"></a>G70 </td><td class="fielddoc">
+</td></tr>
+</table>
+
+<p>Definition at line <a class="el" href="_c_l_types_8h_source.xhtml#l00030">30</a> of file <a class="el" href="_c_l_types_8h_source.xhtml">CLTypes.h</a>.</p>
+<div class="fragment"><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <a class="code" href="namespacearm__compute.xhtml#a735ac6c2a02e320969625308810444f3a57a3b40730a5af7ea3e13eb4bba56d82">GPU_ARCH_MASK</a> = 0xF00,</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <a class="code" href="namespacearm__compute.xhtml#a735ac6c2a02e320969625308810444f3afa362f4daec88442a387ff7cda411a38">MIDGARD</a> = 0x100,</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <a class="code" href="namespacearm__compute.xhtml#a735ac6c2a02e320969625308810444f3aa78cc0fd1cab24af0fad71dc4c256f8e">BIFROST</a> = 0x200,</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="namespacearm__compute.xhtml#a735ac6c2a02e320969625308810444f3a6855a4342969d2b58c96d95385d6e673">T600</a> = 0x110,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <a class="code" href="namespacearm__compute.xhtml#a735ac6c2a02e320969625308810444f3a664a94fa85b127eabc7bed25091843fd">T700</a> = 0x120,</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <a class="code" href="namespacearm__compute.xhtml#a735ac6c2a02e320969625308810444f3aae926a8537ded0221329aa9a89b84048">T800</a> = 0x130,</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="namespacearm__compute.xhtml#a735ac6c2a02e320969625308810444f3a0a91b0ff027767625b7d1a924e10c298">G70</a> = 0x210</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> };</div><div class="ttc" id="namespacearm__compute_xhtml_a735ac6c2a02e320969625308810444f3a664a94fa85b127eabc7bed25091843fd"><div class="ttname"><a href="namespacearm__compute.xhtml#a735ac6c2a02e320969625308810444f3a664a94fa85b127eabc7bed25091843fd">arm_compute::GPUTarget::T700</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a735ac6c2a02e320969625308810444f3aae926a8537ded0221329aa9a89b84048"><div class="ttname"><a href="namespacearm__compute.xhtml#a735ac6c2a02e320969625308810444f3aae926a8537ded0221329aa9a89b84048">arm_compute::GPUTarget::T800</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a735ac6c2a02e320969625308810444f3a57a3b40730a5af7ea3e13eb4bba56d82"><div class="ttname"><a href="namespacearm__compute.xhtml#a735ac6c2a02e320969625308810444f3a57a3b40730a5af7ea3e13eb4bba56d82">arm_compute::GPUTarget::GPU_ARCH_MASK</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a735ac6c2a02e320969625308810444f3a6855a4342969d2b58c96d95385d6e673"><div class="ttname"><a href="namespacearm__compute.xhtml#a735ac6c2a02e320969625308810444f3a6855a4342969d2b58c96d95385d6e673">arm_compute::GPUTarget::T600</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a735ac6c2a02e320969625308810444f3a0a91b0ff027767625b7d1a924e10c298"><div class="ttname"><a href="namespacearm__compute.xhtml#a735ac6c2a02e320969625308810444f3a0a91b0ff027767625b7d1a924e10c298">arm_compute::GPUTarget::G70</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a735ac6c2a02e320969625308810444f3afa362f4daec88442a387ff7cda411a38"><div class="ttname"><a href="namespacearm__compute.xhtml#a735ac6c2a02e320969625308810444f3afa362f4daec88442a387ff7cda411a38">arm_compute::GPUTarget::MIDGARD</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a735ac6c2a02e320969625308810444f3aa78cc0fd1cab24af0fad71dc4c256f8e"><div class="ttname"><a href="namespacearm__compute.xhtml#a735ac6c2a02e320969625308810444f3aa78cc0fd1cab24af0fad71dc4c256f8e">arm_compute::GPUTarget::BIFROST</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
<a class="anchor" id="a673665b4587a2956fcbad5f0e9ba89d3"></a>
<div class="memitem">
<div class="memproto">
@@ -3538,16 +4607,12 @@
<tr><td class="fieldname"><a class="anchor" id="a673665b4587a2956fcbad5f0e9ba89d3a68616ae21712c00705b962f4eff06eaa"></a>L1_NORM </td><td class="fielddoc">
<p>L1 norm. </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="a673665b4587a2956fcbad5f0e9ba89d3a9b9f2c16d5d031b7057832d23906af52"></a>L1SQRT_NORM </td><td class="fielddoc">
-<p>L1 norm with SQRT. </p>
-</td></tr>
</table>
-<p>Definition at line <a class="el" href="_types_8h_source.xhtml#l00334">334</a> of file <a class="el" href="_types_8h_source.xhtml">Types.h</a>.</p>
-<div class="fragment"><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <a class="code" href="namespacearm__compute.xhtml#a673665b4587a2956fcbad5f0e9ba89d3a80485e54c7a3c93a0f74637c6b918ce5">L2_NORM</a>, </div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <a class="code" href="namespacearm__compute.xhtml#a673665b4587a2956fcbad5f0e9ba89d3ac9e68c0594494ec85805b225a7acb9c2">L2HYS_NORM</a>, </div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <a class="code" href="namespacearm__compute.xhtml#a673665b4587a2956fcbad5f0e9ba89d3a68616ae21712c00705b962f4eff06eaa">L1_NORM</a>, </div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <a class="code" href="namespacearm__compute.xhtml#a673665b4587a2956fcbad5f0e9ba89d3a9b9f2c16d5d031b7057832d23906af52">L1SQRT_NORM</a> </div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> };</div><div class="ttc" id="namespacearm__compute_xhtml_a673665b4587a2956fcbad5f0e9ba89d3ac9e68c0594494ec85805b225a7acb9c2"><div class="ttname"><a href="namespacearm__compute.xhtml#a673665b4587a2956fcbad5f0e9ba89d3ac9e68c0594494ec85805b225a7acb9c2">arm_compute::HOGNormType::L2HYS_NORM</a></div><div class="ttdoc">L2-norm followed by clipping. </div></div>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00346">346</a> of file <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml">Types.h</a>.</p>
+<div class="fragment"><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> {</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <a class="code" href="namespacearm__compute.xhtml#a673665b4587a2956fcbad5f0e9ba89d3a80485e54c7a3c93a0f74637c6b918ce5">L2_NORM</a> = 1, </div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <a class="code" href="namespacearm__compute.xhtml#a673665b4587a2956fcbad5f0e9ba89d3ac9e68c0594494ec85805b225a7acb9c2">L2HYS_NORM</a> = 2, </div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <a class="code" href="namespacearm__compute.xhtml#a673665b4587a2956fcbad5f0e9ba89d3a68616ae21712c00705b962f4eff06eaa">L1_NORM</a> = 3 </div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> };</div><div class="ttc" id="namespacearm__compute_xhtml_a673665b4587a2956fcbad5f0e9ba89d3ac9e68c0594494ec85805b225a7acb9c2"><div class="ttname"><a href="namespacearm__compute.xhtml#a673665b4587a2956fcbad5f0e9ba89d3ac9e68c0594494ec85805b225a7acb9c2">arm_compute::HOGNormType::L2HYS_NORM</a></div><div class="ttdoc">L2-norm followed by clipping. </div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a673665b4587a2956fcbad5f0e9ba89d3a68616ae21712c00705b962f4eff06eaa"><div class="ttname"><a href="namespacearm__compute.xhtml#a673665b4587a2956fcbad5f0e9ba89d3a68616ae21712c00705b962f4eff06eaa">arm_compute::HOGNormType::L1_NORM</a></div><div class="ttdoc">L1 norm. </div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a673665b4587a2956fcbad5f0e9ba89d3a80485e54c7a3c93a0f74637c6b918ce5"><div class="ttname"><a href="namespacearm__compute.xhtml#a673665b4587a2956fcbad5f0e9ba89d3a80485e54c7a3c93a0f74637c6b918ce5">arm_compute::HOGNormType::L2_NORM</a></div><div class="ttdoc">L2-norm. </div></div>
-<div class="ttc" id="namespacearm__compute_xhtml_a673665b4587a2956fcbad5f0e9ba89d3a9b9f2c16d5d031b7057832d23906af52"><div class="ttname"><a href="namespacearm__compute.xhtml#a673665b4587a2956fcbad5f0e9ba89d3a9b9f2c16d5d031b7057832d23906af52">arm_compute::HOGNormType::L1SQRT_NORM</a></div><div class="ttdoc">L1 norm with SQRT. </div></div>
</div><!-- fragment -->
</div>
</div>
@@ -3582,8 +4647,8 @@
</td></tr>
</table>
-<p>Definition at line <a class="el" href="_types_8h_source.xhtml#l00201">201</a> of file <a class="el" href="_types_8h_source.xhtml">Types.h</a>.</p>
-<div class="fragment"><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <a class="code" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9a7f5ccbc3d30c2cd3fd04d567946cbde2">NEAREST_NEIGHBOR</a>, </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <a class="code" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9aad6fddf718ad19b063e02fdd7e8e3e65">BILINEAR</a>, </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <a class="code" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9a639aaa22a784d5e5cb03a522267e79c4">AREA</a>, </div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> };</div><div class="ttc" id="namespacearm__compute_xhtml_a966a9c417ce5e94dca08d9b5e745c0c9aad6fddf718ad19b063e02fdd7e8e3e65"><div class="ttname"><a href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9aad6fddf718ad19b063e02fdd7e8e3e65">arm_compute::InterpolationPolicy::BILINEAR</a></div><div class="ttdoc">Output values are defined by bilinear interpolation between the pixels. </div></div>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00211">211</a> of file <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml">Types.h</a>.</p>
+<div class="fragment"><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> {</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <a class="code" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9a7f5ccbc3d30c2cd3fd04d567946cbde2">NEAREST_NEIGHBOR</a>, </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <a class="code" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9aad6fddf718ad19b063e02fdd7e8e3e65">BILINEAR</a>, </div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <a class="code" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9a639aaa22a784d5e5cb03a522267e79c4">AREA</a>, </div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> };</div><div class="ttc" id="namespacearm__compute_xhtml_a966a9c417ce5e94dca08d9b5e745c0c9aad6fddf718ad19b063e02fdd7e8e3e65"><div class="ttname"><a href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9aad6fddf718ad19b063e02fdd7e8e3e65">arm_compute::InterpolationPolicy::BILINEAR</a></div><div class="ttdoc">Output values are defined by bilinear interpolation between the pixels. </div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a966a9c417ce5e94dca08d9b5e745c0c9a7f5ccbc3d30c2cd3fd04d567946cbde2"><div class="ttname"><a href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9a7f5ccbc3d30c2cd3fd04d567946cbde2">arm_compute::InterpolationPolicy::NEAREST_NEIGHBOR</a></div><div class="ttdoc">Output values are defined to match the source pixel whose center is nearest to the sample position...</div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a966a9c417ce5e94dca08d9b5e745c0c9a639aaa22a784d5e5cb03a522267e79c4"><div class="ttname"><a href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9a639aaa22a784d5e5cb03a522267e79c4">arm_compute::InterpolationPolicy::AREA</a></div><div class="ttdoc">Output values are determined by averaging the source pixels whose areas fall under the area of the de...</div></div>
</div><!-- fragment -->
@@ -3617,8 +4682,8 @@
</td></tr>
</table>
-<p>Definition at line <a class="el" href="_types_8h_source.xhtml#l00238">238</a> of file <a class="el" href="_types_8h_source.xhtml">Types.h</a>.</p>
-<div class="fragment"><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> {</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <a class="code" href="namespacearm__compute.xhtml#a7b3ec6413f000b02fdb4e39a951d9f8aac2f1be73bf576190d1f42bdaf5162ae8">L1NORM</a>, </div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <a class="code" href="namespacearm__compute.xhtml#a7b3ec6413f000b02fdb4e39a951d9f8aad927ac799e8b24f80fc80d89b2eb7131">L2NORM</a> </div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> };</div><div class="ttc" id="namespacearm__compute_xhtml_a7b3ec6413f000b02fdb4e39a951d9f8aac2f1be73bf576190d1f42bdaf5162ae8"><div class="ttname"><a href="namespacearm__compute.xhtml#a7b3ec6413f000b02fdb4e39a951d9f8aac2f1be73bf576190d1f42bdaf5162ae8">arm_compute::MagnitudeType::L1NORM</a></div><div class="ttdoc">L1 normalization type. </div></div>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00249">249</a> of file <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml">Types.h</a>.</p>
+<div class="fragment"><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <a class="code" href="namespacearm__compute.xhtml#a7b3ec6413f000b02fdb4e39a951d9f8aac2f1be73bf576190d1f42bdaf5162ae8">L1NORM</a>, </div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <a class="code" href="namespacearm__compute.xhtml#a7b3ec6413f000b02fdb4e39a951d9f8aad927ac799e8b24f80fc80d89b2eb7131">L2NORM</a> </div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> };</div><div class="ttc" id="namespacearm__compute_xhtml_a7b3ec6413f000b02fdb4e39a951d9f8aac2f1be73bf576190d1f42bdaf5162ae8"><div class="ttname"><a href="namespacearm__compute.xhtml#a7b3ec6413f000b02fdb4e39a951d9f8aac2f1be73bf576190d1f42bdaf5162ae8">arm_compute::MagnitudeType::L1NORM</a></div><div class="ttdoc">L1 normalization type. </div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a7b3ec6413f000b02fdb4e39a951d9f8aad927ac799e8b24f80fc80d89b2eb7131"><div class="ttname"><a href="namespacearm__compute.xhtml#a7b3ec6413f000b02fdb4e39a951d9f8aad927ac799e8b24f80fc80d89b2eb7131">arm_compute::MagnitudeType::L2NORM</a></div><div class="ttdoc">L2 normalization type. </div></div>
</div><!-- fragment -->
</div>
@@ -3657,8 +4722,8 @@
</td></tr>
</table>
-<p>Definition at line <a class="el" href="_types_8h_source.xhtml#l00310">310</a> of file <a class="el" href="_types_8h_source.xhtml">Types.h</a>.</p>
-<div class="fragment"><div class="line"><a name="l00311"></a><span class="lineno"> 311</span> {</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <a class="code" href="namespacearm__compute.xhtml#afdda916edc7502967bbec17ea3c06c02ae657cce1913c857166b0475f18668ef5">BOX</a>, </div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <a class="code" href="namespacearm__compute.xhtml#afdda916edc7502967bbec17ea3c06c02a04dd53a8e6c2306e9bbf944c1d6047f2">CROSS</a>, </div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <a class="code" href="namespacearm__compute.xhtml#afdda916edc7502967bbec17ea3c06c02a290d4b81f4e2b47d86fd1b0170e9aab7">DISK</a>, </div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <a class="code" href="namespacearm__compute.xhtml#afdda916edc7502967bbec17ea3c06c02a03570470bad94692ce93e32700d2e1cb">OTHER</a> </div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> };</div><div class="ttc" id="namespacearm__compute_xhtml_afdda916edc7502967bbec17ea3c06c02a290d4b81f4e2b47d86fd1b0170e9aab7"><div class="ttname"><a href="namespacearm__compute.xhtml#afdda916edc7502967bbec17ea3c06c02a290d4b81f4e2b47d86fd1b0170e9aab7">arm_compute::MatrixPattern::DISK</a></div><div class="ttdoc">Disk pattern matrix. </div></div>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00321">321</a> of file <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml">Types.h</a>.</p>
+<div class="fragment"><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <a class="code" href="namespacearm__compute.xhtml#afdda916edc7502967bbec17ea3c06c02ae657cce1913c857166b0475f18668ef5">BOX</a>, </div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <a class="code" href="namespacearm__compute.xhtml#afdda916edc7502967bbec17ea3c06c02a04dd53a8e6c2306e9bbf944c1d6047f2">CROSS</a>, </div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <a class="code" href="namespacearm__compute.xhtml#afdda916edc7502967bbec17ea3c06c02a290d4b81f4e2b47d86fd1b0170e9aab7">DISK</a>, </div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <a class="code" href="namespacearm__compute.xhtml#afdda916edc7502967bbec17ea3c06c02a03570470bad94692ce93e32700d2e1cb">OTHER</a> </div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> };</div><div class="ttc" id="namespacearm__compute_xhtml_afdda916edc7502967bbec17ea3c06c02a290d4b81f4e2b47d86fd1b0170e9aab7"><div class="ttname"><a href="namespacearm__compute.xhtml#afdda916edc7502967bbec17ea3c06c02a290d4b81f4e2b47d86fd1b0170e9aab7">arm_compute::MatrixPattern::DISK</a></div><div class="ttdoc">Disk pattern matrix. </div></div>
<div class="ttc" id="namespacearm__compute_xhtml_afdda916edc7502967bbec17ea3c06c02ae657cce1913c857166b0475f18668ef5"><div class="ttname"><a href="namespacearm__compute.xhtml#afdda916edc7502967bbec17ea3c06c02ae657cce1913c857166b0475f18668ef5">arm_compute::MatrixPattern::BOX</a></div><div class="ttdoc">Box pattern matrix. </div></div>
<div class="ttc" id="namespacearm__compute_xhtml_afdda916edc7502967bbec17ea3c06c02a04dd53a8e6c2306e9bbf944c1d6047f2"><div class="ttname"><a href="namespacearm__compute.xhtml#afdda916edc7502967bbec17ea3c06c02a04dd53a8e6c2306e9bbf944c1d6047f2">arm_compute::MatrixPattern::CROSS</a></div><div class="ttdoc">Cross pattern matrix. </div></div>
<div class="ttc" id="namespacearm__compute_xhtml_afdda916edc7502967bbec17ea3c06c02a03570470bad94692ce93e32700d2e1cb"><div class="ttname"><a href="namespacearm__compute.xhtml#afdda916edc7502967bbec17ea3c06c02a03570470bad94692ce93e32700d2e1cb">arm_compute::MatrixPattern::OTHER</a></div><div class="ttdoc">Any other matrix pattern. </div></div>
@@ -3696,8 +4761,8 @@
</td></tr>
</table>
-<p>Definition at line <a class="el" href="_types_8h_source.xhtml#l00319">319</a> of file <a class="el" href="_types_8h_source.xhtml">Types.h</a>.</p>
-<div class="fragment"><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  : <span class="keywordtype">unsigned</span></div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> {</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <a class="code" href="namespacearm__compute.xhtml#adf2ced65e536375a1c96425d9fced858a8ab0c3a037e882577dec378985477074">MEDIAN</a> = 0, </div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <a class="code" href="namespacearm__compute.xhtml#adf2ced65e536375a1c96425d9fced858ace31e2a082d17e038fcc6e3006166653">MIN</a> = 1, </div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <a class="code" href="namespacearm__compute.xhtml#adf2ced65e536375a1c96425d9fced858a26a4b44a837bf97b972628509912b4a5">MAX</a> = 2, </div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> };</div><div class="ttc" id="namespacearm__compute_xhtml_adf2ced65e536375a1c96425d9fced858a26a4b44a837bf97b972628509912b4a5"><div class="ttname"><a href="namespacearm__compute.xhtml#adf2ced65e536375a1c96425d9fced858a26a4b44a837bf97b972628509912b4a5">arm_compute::NonLinearFilterFunction::MAX</a></div><div class="ttdoc">Non linear dilate. </div></div>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00330">330</a> of file <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml">Types.h</a>.</p>
+<div class="fragment"><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  : <span class="keywordtype">unsigned</span></div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <a class="code" href="namespacearm__compute.xhtml#adf2ced65e536375a1c96425d9fced858a8ab0c3a037e882577dec378985477074">MEDIAN</a> = 0, </div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <a class="code" href="namespacearm__compute.xhtml#adf2ced65e536375a1c96425d9fced858ace31e2a082d17e038fcc6e3006166653">MIN</a> = 1, </div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <a class="code" href="namespacearm__compute.xhtml#adf2ced65e536375a1c96425d9fced858a26a4b44a837bf97b972628509912b4a5">MAX</a> = 2, </div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> };</div><div class="ttc" id="namespacearm__compute_xhtml_adf2ced65e536375a1c96425d9fced858a26a4b44a837bf97b972628509912b4a5"><div class="ttname"><a href="namespacearm__compute.xhtml#adf2ced65e536375a1c96425d9fced858a26a4b44a837bf97b972628509912b4a5">arm_compute::NonLinearFilterFunction::MAX</a></div><div class="ttdoc">Non linear dilate. </div></div>
<div class="ttc" id="namespacearm__compute_xhtml_adf2ced65e536375a1c96425d9fced858ace31e2a082d17e038fcc6e3006166653"><div class="ttname"><a href="namespacearm__compute.xhtml#adf2ced65e536375a1c96425d9fced858ace31e2a082d17e038fcc6e3006166653">arm_compute::NonLinearFilterFunction::MIN</a></div><div class="ttdoc">Non linear erode. </div></div>
<div class="ttc" id="namespacearm__compute_xhtml_adf2ced65e536375a1c96425d9fced858a8ab0c3a037e882577dec378985477074"><div class="ttname"><a href="namespacearm__compute.xhtml#adf2ced65e536375a1c96425d9fced858a8ab0c3a037e882577dec378985477074">arm_compute::NonLinearFilterFunction::MEDIAN</a></div><div class="ttdoc">Non linear median filter. </div></div>
</div><!-- fragment -->
@@ -3723,15 +4788,21 @@
<p>The normalization type used for the normalization layer. </p>
<table class="fieldtable">
-<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="ad4bb8dabdbf8ad75e34220cc666b59caa531d6a3a92fd17afd3c7a8de8d5834c2"></a>IN_MAP </td><td class="fielddoc">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="ad4bb8dabdbf8ad75e34220cc666b59caaca2475ab7883ebb9f125241141896190"></a>IN_MAP_1D </td><td class="fielddoc">
+<p>Normalization applied within the same map in 1D region. </p>
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="ad4bb8dabdbf8ad75e34220cc666b59caa6ff8bd96743aae9fd283cd822b84278e"></a>IN_MAP_2D </td><td class="fielddoc">
+<p>Normalization applied within the same map in 2D region. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="ad4bb8dabdbf8ad75e34220cc666b59caa980fef040549733973683b1a868f96e5"></a>CROSS_MAP </td><td class="fielddoc">
+<p>Normalization applied cross maps. </p>
</td></tr>
</table>
-<p>Definition at line <a class="el" href="_types_8h_source.xhtml#l00327">327</a> of file <a class="el" href="_types_8h_source.xhtml">Types.h</a>.</p>
-<div class="fragment"><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> {</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <a class="code" href="namespacearm__compute.xhtml#ad4bb8dabdbf8ad75e34220cc666b59caa531d6a3a92fd17afd3c7a8de8d5834c2">IN_MAP</a>, <span class="comment">/* Normalization applied within the same map */</span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <a class="code" href="namespacearm__compute.xhtml#ad4bb8dabdbf8ad75e34220cc666b59caa980fef040549733973683b1a868f96e5">CROSS_MAP</a> <span class="comment">/* Normalization applied cross maps */</span></div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> };</div><div class="ttc" id="namespacearm__compute_xhtml_ad4bb8dabdbf8ad75e34220cc666b59caa531d6a3a92fd17afd3c7a8de8d5834c2"><div class="ttname"><a href="namespacearm__compute.xhtml#ad4bb8dabdbf8ad75e34220cc666b59caa531d6a3a92fd17afd3c7a8de8d5834c2">arm_compute::NormType::IN_MAP</a></div></div>
-<div class="ttc" id="namespacearm__compute_xhtml_ad4bb8dabdbf8ad75e34220cc666b59caa980fef040549733973683b1a868f96e5"><div class="ttname"><a href="namespacearm__compute.xhtml#ad4bb8dabdbf8ad75e34220cc666b59caa980fef040549733973683b1a868f96e5">arm_compute::NormType::CROSS_MAP</a></div></div>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00338">338</a> of file <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml">Types.h</a>.</p>
+<div class="fragment"><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> {</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <a class="code" href="namespacearm__compute.xhtml#ad4bb8dabdbf8ad75e34220cc666b59caaca2475ab7883ebb9f125241141896190">IN_MAP_1D</a>, </div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <a class="code" href="namespacearm__compute.xhtml#ad4bb8dabdbf8ad75e34220cc666b59caa6ff8bd96743aae9fd283cd822b84278e">IN_MAP_2D</a>, </div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <a class="code" href="namespacearm__compute.xhtml#ad4bb8dabdbf8ad75e34220cc666b59caa980fef040549733973683b1a868f96e5">CROSS_MAP</a> </div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> };</div><div class="ttc" id="namespacearm__compute_xhtml_ad4bb8dabdbf8ad75e34220cc666b59caaca2475ab7883ebb9f125241141896190"><div class="ttname"><a href="namespacearm__compute.xhtml#ad4bb8dabdbf8ad75e34220cc666b59caaca2475ab7883ebb9f125241141896190">arm_compute::NormType::IN_MAP_1D</a></div><div class="ttdoc">Normalization applied within the same map in 1D region. </div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_ad4bb8dabdbf8ad75e34220cc666b59caa980fef040549733973683b1a868f96e5"><div class="ttname"><a href="namespacearm__compute.xhtml#ad4bb8dabdbf8ad75e34220cc666b59caa980fef040549733973683b1a868f96e5">arm_compute::NormType::CROSS_MAP</a></div><div class="ttdoc">Normalization applied cross maps. </div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_ad4bb8dabdbf8ad75e34220cc666b59caa6ff8bd96743aae9fd283cd822b84278e"><div class="ttname"><a href="namespacearm__compute.xhtml#ad4bb8dabdbf8ad75e34220cc666b59caa6ff8bd96743aae9fd283cd822b84278e">arm_compute::NormType::IN_MAP_2D</a></div><div class="ttdoc">Normalization applied within the same map in 2D region. </div></div>
</div><!-- fragment -->
</div>
</div>
@@ -3764,8 +4835,8 @@
</td></tr>
</table>
-<p>Definition at line <a class="el" href="_types_8h_source.xhtml#l00248">248</a> of file <a class="el" href="_types_8h_source.xhtml">Types.h</a>.</p>
-<div class="fragment"><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>  <a class="code" href="namespacearm__compute.xhtml#af00a42ecad444bbda75cde1b64bd7e72a6898b46a1cde8a1572e2722c44c5ab07">SIGNED</a>, </div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <a class="code" href="namespacearm__compute.xhtml#af00a42ecad444bbda75cde1b64bd7e72aaf36b47f395cd01f48b8fc1013665054">UNSIGNED</a> </div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> };</div><div class="ttc" id="namespacearm__compute_xhtml_af00a42ecad444bbda75cde1b64bd7e72aaf36b47f395cd01f48b8fc1013665054"><div class="ttname"><a href="namespacearm__compute.xhtml#af00a42ecad444bbda75cde1b64bd7e72aaf36b47f395cd01f48b8fc1013665054">arm_compute::PhaseType::UNSIGNED</a></div><div class="ttdoc">Angle range: [0, 180]. </div></div>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00259">259</a> of file <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml">Types.h</a>.</p>
+<div class="fragment"><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> {</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <a class="code" href="namespacearm__compute.xhtml#af00a42ecad444bbda75cde1b64bd7e72a6898b46a1cde8a1572e2722c44c5ab07">SIGNED</a>, </div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <a class="code" href="namespacearm__compute.xhtml#af00a42ecad444bbda75cde1b64bd7e72aaf36b47f395cd01f48b8fc1013665054">UNSIGNED</a> </div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> };</div><div class="ttc" id="namespacearm__compute_xhtml_af00a42ecad444bbda75cde1b64bd7e72aaf36b47f395cd01f48b8fc1013665054"><div class="ttname"><a href="namespacearm__compute.xhtml#af00a42ecad444bbda75cde1b64bd7e72aaf36b47f395cd01f48b8fc1013665054">arm_compute::PhaseType::UNSIGNED</a></div><div class="ttdoc">Angle range: [0, 180]. </div></div>
<div class="ttc" id="namespacearm__compute_xhtml_af00a42ecad444bbda75cde1b64bd7e72a6898b46a1cde8a1572e2722c44c5ab07"><div class="ttname"><a href="namespacearm__compute.xhtml#af00a42ecad444bbda75cde1b64bd7e72a6898b46a1cde8a1572e2722c44c5ab07">arm_compute::PhaseType::SIGNED</a></div><div class="ttdoc">Angle range: [0, 360]. </div></div>
</div><!-- fragment -->
</div>
@@ -3798,8 +4869,8 @@
</td></tr>
</table>
-<p>Definition at line <a class="el" href="_types_8h_source.xhtml#l00368">368</a> of file <a class="el" href="_types_8h_source.xhtml">Types.h</a>.</p>
-<div class="fragment"><div class="line"><a name="l00369"></a><span class="lineno"> 369</span> {</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <a class="code" href="namespacearm__compute.xhtml#adf2ced65e536375a1c96425d9fced858a26a4b44a837bf97b972628509912b4a5">MAX</a>, </div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <a class="code" href="namespacearm__compute.xhtml#a9172da722f0a434e5cc07c0a3c115d93afcefd647d6a866603c627b11347c707a">AVG</a> </div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span> };</div><div class="ttc" id="namespacearm__compute_xhtml_a9172da722f0a434e5cc07c0a3c115d93afcefd647d6a866603c627b11347c707a"><div class="ttname"><a href="namespacearm__compute.xhtml#a9172da722f0a434e5cc07c0a3c115d93afcefd647d6a866603c627b11347c707a">arm_compute::PoolingType::AVG</a></div><div class="ttdoc">Average Pooling. </div></div>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00379">379</a> of file <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml">Types.h</a>.</p>
+<div class="fragment"><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <a class="code" href="namespacearm__compute.xhtml#adf2ced65e536375a1c96425d9fced858a26a4b44a837bf97b972628509912b4a5">MAX</a>, </div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <a class="code" href="namespacearm__compute.xhtml#a9172da722f0a434e5cc07c0a3c115d93afcefd647d6a866603c627b11347c707a">AVG</a> </div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span> };</div><div class="ttc" id="namespacearm__compute_xhtml_a9172da722f0a434e5cc07c0a3c115d93afcefd647d6a866603c627b11347c707a"><div class="ttname"><a href="namespacearm__compute.xhtml#a9172da722f0a434e5cc07c0a3c115d93afcefd647d6a866603c627b11347c707a">arm_compute::PoolingType::AVG</a></div><div class="ttdoc">Average Pooling. </div></div>
<div class="ttc" id="namespacearm__compute_xhtml_adf2ced65e536375a1c96425d9fced858a26a4b44a837bf97b972628509912b4a5"><div class="ttname"><a href="namespacearm__compute.xhtml#adf2ced65e536375a1c96425d9fced858a26a4b44a837bf97b972628509912b4a5">arm_compute::NonLinearFilterFunction::MAX</a></div><div class="ttdoc">Non linear dilate. </div></div>
</div><!-- fragment -->
</div>
@@ -3827,13 +4898,17 @@
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="add6426cbf2e057a195846d4ba09a50bea5631ad8e27788edfca7e13535d862c06"></a>TO_ZERO </td><td class="fielddoc">
<p>Truncates the least significand values that are lost in operations. </p>
</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="add6426cbf2e057a195846d4ba09a50bea8c0084566b290fa9e5e429f4ae241f95"></a>TO_NEAREST_UP </td><td class="fielddoc">
+<p>Rounds to nearest value; half rounds up. </p>
+</td></tr>
<tr><td class="fieldname"><a class="anchor" id="add6426cbf2e057a195846d4ba09a50bea02ff1fff1812f84c89547fcd6c176150"></a>TO_NEAREST_EVEN </td><td class="fielddoc">
-<p>Rounds to nearest even output value. </p>
+<p>Rounds to nearest value; half rounds to nearest even. </p>
</td></tr>
</table>
-<p>Definition at line <a class="el" href="_types_8h_source.xhtml#l00223">223</a> of file <a class="el" href="_types_8h_source.xhtml">Types.h</a>.</p>
-<div class="fragment"><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <a class="code" href="namespacearm__compute.xhtml#add6426cbf2e057a195846d4ba09a50bea5631ad8e27788edfca7e13535d862c06">TO_ZERO</a>, </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <a class="code" href="namespacearm__compute.xhtml#add6426cbf2e057a195846d4ba09a50bea02ff1fff1812f84c89547fcd6c176150">TO_NEAREST_EVEN</a> </div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> };</div><div class="ttc" id="namespacearm__compute_xhtml_add6426cbf2e057a195846d4ba09a50bea02ff1fff1812f84c89547fcd6c176150"><div class="ttname"><a href="namespacearm__compute.xhtml#add6426cbf2e057a195846d4ba09a50bea02ff1fff1812f84c89547fcd6c176150">arm_compute::RoundingPolicy::TO_NEAREST_EVEN</a></div><div class="ttdoc">Rounds to nearest even output value. </div></div>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00233">233</a> of file <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml">Types.h</a>.</p>
+<div class="fragment"><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <a class="code" href="namespacearm__compute.xhtml#add6426cbf2e057a195846d4ba09a50bea5631ad8e27788edfca7e13535d862c06">TO_ZERO</a>, </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <a class="code" href="namespacearm__compute.xhtml#add6426cbf2e057a195846d4ba09a50bea8c0084566b290fa9e5e429f4ae241f95">TO_NEAREST_UP</a>, </div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <a class="code" href="namespacearm__compute.xhtml#add6426cbf2e057a195846d4ba09a50bea02ff1fff1812f84c89547fcd6c176150">TO_NEAREST_EVEN</a> </div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> };</div><div class="ttc" id="namespacearm__compute_xhtml_add6426cbf2e057a195846d4ba09a50bea8c0084566b290fa9e5e429f4ae241f95"><div class="ttname"><a href="namespacearm__compute.xhtml#add6426cbf2e057a195846d4ba09a50bea8c0084566b290fa9e5e429f4ae241f95">arm_compute::RoundingPolicy::TO_NEAREST_UP</a></div><div class="ttdoc">Rounds to nearest value; half rounds up. </div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_add6426cbf2e057a195846d4ba09a50bea02ff1fff1812f84c89547fcd6c176150"><div class="ttname"><a href="namespacearm__compute.xhtml#add6426cbf2e057a195846d4ba09a50bea02ff1fff1812f84c89547fcd6c176150">arm_compute::RoundingPolicy::TO_NEAREST_EVEN</a></div><div class="ttdoc">Rounds to nearest value; half rounds to nearest even. </div></div>
<div class="ttc" id="namespacearm__compute_xhtml_add6426cbf2e057a195846d4ba09a50bea5631ad8e27788edfca7e13535d862c06"><div class="ttname"><a href="namespacearm__compute.xhtml#add6426cbf2e057a195846d4ba09a50bea5631ad8e27788edfca7e13535d862c06">arm_compute::RoundingPolicy::TO_ZERO</a></div><div class="ttdoc">Truncates the least significand values that are lost in operations. </div></div>
</div><!-- fragment -->
</div>
@@ -3866,8 +4941,8 @@
</td></tr>
</table>
-<p>Definition at line <a class="el" href="_types_8h_source.xhtml#l00230">230</a> of file <a class="el" href="_types_8h_source.xhtml">Types.h</a>.</p>
-<div class="fragment"><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <a class="code" href="namespacearm__compute.xhtml#a08c1503414e23f5dd10ff83492685453a5a2e12b6baf7ad91a2ce32f19c36bd1b">TERM_CRITERIA_EPSILON</a>,</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <a class="code" href="namespacearm__compute.xhtml#a08c1503414e23f5dd10ff83492685453a43f2a8b688fb96e5ad8ba08308bbcdfd">TERM_CRITERIA_ITERATIONS</a>,</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <a class="code" href="namespacearm__compute.xhtml#a08c1503414e23f5dd10ff83492685453a788740b1ba2d6463dae318a332513b29">TERM_CRITERIA_BOTH</a></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> };</div><div class="ttc" id="namespacearm__compute_xhtml_a08c1503414e23f5dd10ff83492685453a5a2e12b6baf7ad91a2ce32f19c36bd1b"><div class="ttname"><a href="namespacearm__compute.xhtml#a08c1503414e23f5dd10ff83492685453a5a2e12b6baf7ad91a2ce32f19c36bd1b">arm_compute::Termination::TERM_CRITERIA_EPSILON</a></div></div>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00241">241</a> of file <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml">Types.h</a>.</p>
+<div class="fragment"><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> {</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <a class="code" href="namespacearm__compute.xhtml#a08c1503414e23f5dd10ff83492685453a5a2e12b6baf7ad91a2ce32f19c36bd1b">TERM_CRITERIA_EPSILON</a>,</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <a class="code" href="namespacearm__compute.xhtml#a08c1503414e23f5dd10ff83492685453a43f2a8b688fb96e5ad8ba08308bbcdfd">TERM_CRITERIA_ITERATIONS</a>,</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <a class="code" href="namespacearm__compute.xhtml#a08c1503414e23f5dd10ff83492685453a788740b1ba2d6463dae318a332513b29">TERM_CRITERIA_BOTH</a></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> };</div><div class="ttc" id="namespacearm__compute_xhtml_a08c1503414e23f5dd10ff83492685453a5a2e12b6baf7ad91a2ce32f19c36bd1b"><div class="ttname"><a href="namespacearm__compute.xhtml#a08c1503414e23f5dd10ff83492685453a5a2e12b6baf7ad91a2ce32f19c36bd1b">arm_compute::Termination::TERM_CRITERIA_EPSILON</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a08c1503414e23f5dd10ff83492685453a43f2a8b688fb96e5ad8ba08308bbcdfd"><div class="ttname"><a href="namespacearm__compute.xhtml#a08c1503414e23f5dd10ff83492685453a43f2a8b688fb96e5ad8ba08308bbcdfd">arm_compute::Termination::TERM_CRITERIA_ITERATIONS</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a08c1503414e23f5dd10ff83492685453a788740b1ba2d6463dae318a332513b29"><div class="ttname"><a href="namespacearm__compute.xhtml#a08c1503414e23f5dd10ff83492685453a788740b1ba2d6463dae318a332513b29">arm_compute::Termination::TERM_CRITERIA_BOTH</a></div></div>
</div><!-- fragment -->
@@ -3901,8 +4976,8 @@
</td></tr>
</table>
-<p>Definition at line <a class="el" href="_types_8h_source.xhtml#l00216">216</a> of file <a class="el" href="_types_8h_source.xhtml">Types.h</a>.</p>
-<div class="fragment"><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <a class="code" href="namespacearm__compute.xhtml#a3e6b23e675649b83240691abbc42a649a98ad0e8750ae10ad556ed7a62affb452">BINARY</a>, </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <a class="code" href="namespacearm__compute.xhtml#a3e6b23e675649b83240691abbc42a649a01036ddcc971d02f6c32c3da31a119f2">RANGE</a> </div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> };</div><div class="ttc" id="namespacearm__compute_xhtml_a3e6b23e675649b83240691abbc42a649a01036ddcc971d02f6c32c3da31a119f2"><div class="ttname"><a href="namespacearm__compute.xhtml#a3e6b23e675649b83240691abbc42a649a01036ddcc971d02f6c32c3da31a119f2">arm_compute::ThresholdType::RANGE</a></div><div class="ttdoc">Threshold with two values. </div></div>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00226">226</a> of file <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml">Types.h</a>.</p>
+<div class="fragment"><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> {</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <a class="code" href="namespacearm__compute.xhtml#a3e6b23e675649b83240691abbc42a649a98ad0e8750ae10ad556ed7a62affb452">BINARY</a>, </div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <a class="code" href="namespacearm__compute.xhtml#a3e6b23e675649b83240691abbc42a649a01036ddcc971d02f6c32c3da31a119f2">RANGE</a> </div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> };</div><div class="ttc" id="namespacearm__compute_xhtml_a3e6b23e675649b83240691abbc42a649a01036ddcc971d02f6c32c3da31a119f2"><div class="ttname"><a href="namespacearm__compute.xhtml#a3e6b23e675649b83240691abbc42a649a01036ddcc971d02f6c32c3da31a119f2">arm_compute::ThresholdType::RANGE</a></div><div class="ttdoc">Threshold with two values. </div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a3e6b23e675649b83240691abbc42a649a98ad0e8750ae10ad556ed7a62affb452"><div class="ttname"><a href="namespacearm__compute.xhtml#a3e6b23e675649b83240691abbc42a649a98ad0e8750ae10ad556ed7a62affb452">arm_compute::ThresholdType::BINARY</a></div><div class="ttdoc">Threshold with one value. </div></div>
</div><!-- fragment -->
</div>
@@ -3959,8 +5034,8 @@
<p>Definition at line <a class="el" href="_i_access_window_8h_source.xhtml#l00047">47</a> of file <a class="el" href="_i_access_window_8h_source.xhtml">IAccessWindow.h</a>.</p>
-<p>References <a class="el" href="_error_8h_source.xhtml#l00100">ARM_COMPUTE_ERROR_ON</a>.</p>
-<div class="fragment"><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(step <= 0);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">return</span> required - step * ((required - available + step - 1) / step);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> }</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00100">Error.h:100</a></div></div>
+<p>References <a class="el" href="_error_8h_source.xhtml#l00124">ARM_COMPUTE_ERROR_ON</a>.</p>
+<div class="fragment"><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(step <= 0);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">return</span> required - step * ((required - available + step - 1) / step);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> }</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00124">Error.h:124</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -4015,11 +5090,69 @@
<p>Definition at line <a class="el" href="_i_access_window_8h_source.xhtml#l00063">63</a> of file <a class="el" href="_i_access_window_8h_source.xhtml">IAccessWindow.h</a>.</p>
-<p>References <a class="el" href="_error_8h_source.xhtml#l00100">ARM_COMPUTE_ERROR_ON</a>.</p>
-<div class="fragment"><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(step <= 0);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">return</span> required + step * ((available - required + step - 1) / step);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> }</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00100">Error.h:100</a></div></div>
+<p>References <a class="el" href="_error_8h_source.xhtml#l00124">ARM_COMPUTE_ERROR_ON</a>.</p>
+<div class="fragment"><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(step <= 0);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">return</span> required + step * ((available - required + step - 1) / step);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> }</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00124">Error.h:124</a></div></div>
</div><!-- fragment -->
</div>
</div>
+<a class="anchor" id="a1c9627ac3d73a67e9312c2c9740ff0a3"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool auto_init_if_empty </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml">ITensorInfo</a> & </td>
+ <td class="paramname"><em>info</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> & </td>
+ <td class="paramname"><em>shape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>num_channels</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> </td>
+ <td class="paramname"><em>data_type</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_helpers_8inl_source.xhtml#l00249">249</a> of file <a class="el" href="_helpers_8inl_source.xhtml">Helpers.inl</a>.</p>
+
+<p>References <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml#a4b622a0346ec30baf0b9a387e00c9ace">ITensorInfo::set_data_type()</a>, <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml#aec2c125ece3cc6593a0be7f1fef3d97f">ITensorInfo::set_fixed_point_position()</a>, <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml#ae05139a48d9360e44f5ef2eef64b23ec">ITensorInfo::set_num_channels()</a>, <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml#a40deec9ef7e7c892bef6b11b4d81c38e">ITensorInfo::set_tensor_shape()</a>, <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml#a7c66505457d00ece3aa4b34cab80757d">ITensorInfo::tensor_shape()</a>, and <a class="el" href="_tensor_shape_8h_source.xhtml#l00106">TensorShape::total_size()</a>.</p>
+
+<p>Referenced by <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml#l00449">compute_strides()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">if</span>(info.tensor_shape().total_size() == 0)</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>  info.set_data_type(data_type);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  info.set_tensor_shape(shape);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  info.set_num_channels(num_channels);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  info.set_fixed_point_position(fixed_point_position);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  }</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> </div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> }</div></div><!-- fragment -->
+</div>
+</div>
<a class="anchor" id="a64c17a5a42d2499a1626222ff9753b4d"></a>
<div class="memitem">
<div class="memproto">
@@ -4037,7 +5170,7 @@
<p>Contains the version number and the build options used to build the library</p>
<dl class="section return"><dt>Returns</dt><dd>The <a class="el" href="namespacearm__compute.xhtml">arm_compute</a> library build information </dd></dl>
-<p>Referenced by <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00058">DIV_CEIL()</a>.</p>
+<p>Referenced by <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00059">DIV_CEIL()</a>.</p>
</div>
</div>
@@ -4085,21 +5218,69 @@
</dl>
<dl class="section return"><dt>Returns</dt><dd>The absolute value of the sum of the coefficients if they don't add up to 0, otherwise 1. </dd></dl>
-<p>Definition at line <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00419">419</a> of file <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml">Utils.h</a>.</p>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00425">425</a> of file <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml">Utils.h</a>.</p>
-<p>References <a class="el" href="accumulate_8cl_source.xhtml#l00041">accumulate()</a>.</p>
-<div class="fragment"><div class="line"><a name="l00420"></a><span class="lineno"> 420</span> {</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="keyword">const</span> <span class="keywordtype">size_t</span> size = matrix_size * matrix_size;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span> </div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keywordflow">return</span> std::max(1, std::abs(<a class="code" href="accumulate_8cl.xhtml#a00e540076dd545ad59ac7482f8cdf514">std::accumulate</a>(matrix, matrix + size, 0)));</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span> }</div><div class="ttc" id="accumulate_8cl_xhtml_a00e540076dd545ad59ac7482f8cdf514"><div class="ttname"><a href="accumulate_8cl.xhtml#a00e540076dd545ad59ac7482f8cdf514">accumulate</a></div><div class="ttdeci">__kernel void accumulate(__global uchar *input_ptr, uint input_stride_x, uint input_step_x, uint input_stride_y, uint input_step_y, uint input_offset_first_element_in_bytes, __global uchar *accu_ptr, uint accu_stride_x, uint accu_step_x, uint accu_stride_y, uint accu_step_y, uint accu_offset_first_element_in_bytes)</div><div class="ttdoc">This function accumulates an input image into output image. </div><div class="ttdef"><b>Definition:</b> <a href="accumulate_8cl_source.xhtml#l00041">accumulate.cl:41</a></div></div>
+<p>References <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00905">arm_compute::test::fixed_point_arithmetic::detail::abs()</a>, <a class="el" href="accumulate_8cl_source.xhtml#l00041">accumulate()</a>, and <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00880">arm_compute::test::fixed_point_arithmetic::detail::max()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00426"></a><span class="lineno"> 426</span> {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keyword">const</span> <span class="keywordtype">size_t</span> size = matrix_size * matrix_size;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span> </div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">std::max</a>(1, <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ae115fc750a92fb6a5e094998b56fcc56">std::abs</a>(<a class="code" href="accumulate_8cl.xhtml#a00e540076dd545ad59ac7482f8cdf514">std::accumulate</a>(matrix, matrix + size, 0)));</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span> }</div><div class="ttc" id="accumulate_8cl_xhtml_a00e540076dd545ad59ac7482f8cdf514"><div class="ttname"><a href="accumulate_8cl.xhtml#a00e540076dd545ad59ac7482f8cdf514">accumulate</a></div><div class="ttdeci">__kernel void accumulate(__global uchar *input_ptr, uint input_stride_x, uint input_step_x, uint input_stride_y, uint input_step_y, uint input_offset_first_element_in_bytes, __global uchar *accu_ptr, uint accu_stride_x, uint accu_step_x, uint accu_stride_y, uint accu_step_y, uint accu_offset_first_element_in_bytes)</div><div class="ttdoc">This function accumulates an input image into output image. </div><div class="ttdef"><b>Definition:</b> <a href="accumulate_8cl_source.xhtml#l00041">accumulate.cl:41</a></div></div>
+<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_ad91bb73431b4de1f4946ed949d444849"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">arm_compute::test::fixed_point_arithmetic::detail::max</a></div><div class="ttdeci">fixed_point< T > max(fixed_point< T > x, fixed_point< T > y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00880">FixedPoint.h:880</a></div></div>
+<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_ae115fc750a92fb6a5e094998b56fcc56"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ae115fc750a92fb6a5e094998b56fcc56">arm_compute::test::fixed_point_arithmetic::detail::abs</a></div><div class="ttdeci">fixed_point< T > abs(fixed_point< T > x)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00905">FixedPoint.h:905</a></div></div>
</div><!-- fragment -->
</div>
</div>
-<a class="anchor" id="aa8063930734453501dbe41f60c5a89d9"></a>
+<a class="anchor" id="afcdda83b6a85d5798f08d92c0e235e2e"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classarm__compute_1_1_window.xhtml">Window</a> arm_compute::calculate_max_enlarged_window </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml">ITensorInfo</a> & </td>
+ <td class="paramname"><em>info</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarm__compute_1_1_steps.xhtml">Steps</a> & </td>
+ <td class="paramname"><em>steps</em> = <code><a class="el" href="classarm__compute_1_1_steps.xhtml">Steps</a>()</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="structarm__compute_1_1_border_size.xhtml">BorderSize</a> </td>
+ <td class="paramname"><em>border_size</em> = <code><a class="el" href="structarm__compute_1_1_border_size.xhtml">BorderSize</a>()</code> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Calculate the maximum window for a given tensor shape and border setting. </p>
+<p>The window will also includes the border.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">info</td><td><a class="el" href="classarm__compute_1_1_tensor.xhtml" title="Basic implementation of the tensor interface. ">Tensor</a> info object defining the shape of the object for which the window is created. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">steps</td><td>(Optional) Number of elements processed for each step. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">border_size</td><td>(Optional) Border size. The border region will be included in the window.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The maximum window the kernel can be executed on. </dd></dl>
+
+<p>Referenced by <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml#l00335">update_window_and_padding()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa2117aef4381edbdf81e17ec088df7f1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1_window.xhtml">Window</a> arm_compute::calculate_max_window </td>
<td>(</td>
- <td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_info.xhtml">TensorInfo</a> & </td>
+ <td class="paramtype">const <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml">ITensorInfo</a> & </td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
@@ -4140,18 +5321,18 @@
</dl>
<dl class="section return"><dt>Returns</dt><dd>The maximum window the kernel can be executed on. </dd></dl>
-<p>Referenced by <a class="el" href="_helpers_8h_source.xhtml#l00307">update_window_and_padding()</a>.</p>
+<p>Referenced by <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml#l00335">update_window_and_padding()</a>.</p>
</div>
</div>
-<a class="anchor" id="a0451630695335182319ee53d785d0715"></a>
+<a class="anchor" id="a47456b4d520aee1cba80bf6e20f6685a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1_window.xhtml">Window</a> arm_compute::calculate_max_window_horizontal </td>
<td>(</td>
- <td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_info.xhtml">TensorInfo</a> & </td>
+ <td class="paramtype">const <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml">ITensorInfo</a> & </td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
@@ -4192,7 +5373,7 @@
</dl>
<dl class="section return"><dt>Returns</dt><dd>The maximum window the kernel can be executed on. </dd></dl>
-<p>Referenced by <a class="el" href="_helpers_8h_source.xhtml#l00307">update_window_and_padding()</a>.</p>
+<p>Referenced by <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml#l00335">update_window_and_padding()</a>.</p>
</div>
</div>
@@ -4231,12 +5412,71 @@
<p>Computes the smallest number larger or equal to value that is a multiple of divisor. </p>
-<p>Definition at line <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00042">42</a> of file <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml">Utils.h</a>.</p>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00043">43</a> of file <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml">Utils.h</a>.</p>
-<p>References <a class="el" href="_error_8h_source.xhtml#l00100">ARM_COMPUTE_ERROR_ON</a>.</p>
+<p>References <a class="el" href="_error_8h_source.xhtml#l00124">ARM_COMPUTE_ERROR_ON</a>.</p>
-<p>Referenced by <a class="el" href="_window_8inl_source.xhtml#l00053">Window::scale()</a>.</p>
-<div class="fragment"><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(value < 0 || divisor <= 0);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">return</span> ((value + divisor - 1) / divisor) * divisor;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> }</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00100">Error.h:100</a></div></div>
+<p>Referenced by <a class="el" href="_window_8inl_source.xhtml#l00068">Window::scale()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(value < 0 || divisor <= 0);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">return</span> ((value + divisor - 1) / divisor) * divisor;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> }</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00124">Error.h:124</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a1c0b9414fe3a6ef6a7a23bd324ae9e67"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">T arm_compute::clamp </td>
+ <td>(</td>
+ <td class="paramtype">const T & </td>
+ <td class="paramname"><em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const T & </td>
+ <td class="paramname"><em>lower</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const T & </td>
+ <td class="paramname"><em>upper</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Performs clamping among a lower and upper value. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>Value to clamp. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">lower</td><td>Lower threshold. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">upper</td><td>Upper threshold.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Clamped value. </dd></dl>
+
+<p>Definition at line <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml#l00193">193</a> of file <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml">Helpers.h</a>.</p>
+
+<p>References <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00880">arm_compute::test::fixed_point_arithmetic::detail::max()</a>, and <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00875">arm_compute::test::fixed_point_arithmetic::detail::min()</a>.</p>
+
+<p>Referenced by <a class="el" href="warp__helpers_8h_source.xhtml#l00033">clamp_to_border()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">std::max</a>(lower, <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">std::min</a>(n, upper));</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> }</div><div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_aabcf39e3917f842dbc5fbb0d802f24d5"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">arm_compute::test::fixed_point_arithmetic::detail::min</a></div><div class="ttdeci">fixed_point< T > min(fixed_point< T > x, fixed_point< T > y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00875">FixedPoint.h:875</a></div></div>
+<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_ad91bb73431b4de1f4946ed949d444849"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">arm_compute::test::fixed_point_arithmetic::detail::max</a></div><div class="ttdeci">fixed_point< T > max(fixed_point< T > x, fixed_point< T > y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00880">FixedPoint.h:880</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -4272,9 +5512,9 @@
<p>Definition at line <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00550">550</a> of file <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml">NEColorConvertHelper.inl</a>.</p>
-<p>References <a class="el" href="_error_8h_source.xhtml#l00100">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_window_8h_source.xhtml#l00043">Window::DimX</a>, <a class="el" href="_window_8h_source.xhtml#l00045">Window::DimY</a>, <a class="el" href="_window_8h_source.xhtml#l00090">Window::Dimension::end()</a>, <a class="el" href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">execute_window_loop()</a>, <a class="el" href="_window_8inl_source.xhtml#l00040">Window::set()</a>, <a class="el" href="_window_8h_source.xhtml#l00085">Window::Dimension::start()</a>, <a class="el" href="_window_8h_source.xhtml#l00095">Window::Dimension::step()</a>, <a class="el" href="_window_8inl_source.xhtml#l00068">Window::validate()</a>, <a class="el" href="_window_8h_source.xhtml#l00128">Window::x()</a>, and <a class="el" href="_window_8h_source.xhtml#l00137">Window::y()</a>.</p>
-<div class="fragment"><div class="line"><a name="l00551"></a><span class="lineno"> 551</span> {</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == input);</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == output);</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  win.validate();</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span> </div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <span class="keyword">const</span> <span class="keyword">auto</span> input_ptr = <span class="keyword">static_cast<</span><span class="keyword">const </span>IMultiImage *__restrict<span class="keyword">></span>(input);</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="keyword">const</span> <span class="keyword">auto</span> output_ptr = <span class="keyword">static_cast<</span>IMultiImage *__restrict<span class="keyword">></span>(output);</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span> </div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="comment">// UV's width and height are subsampled</span></div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  Window win_uv(win);</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  win_uv.set(Window::DimX, Window::Dimension(win_uv.x().start() / 2, win_uv.x().end() / 2, win_uv.x().step() / 2));</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  win_uv.set(Window::DimY, Window::Dimension(win_uv.y().start() / 2, win_uv.y().end() / 2, 1));</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  win_uv.validate();</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span> </div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  Iterator in_y(input_ptr->plane(0), win);</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  Iterator in_u(input_ptr->plane(1), win_uv);</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  Iterator in_v(input_ptr->plane(2), win_uv);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  Iterator out_y(output_ptr->plane(0), win);</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  Iterator out_uv(output_ptr->plane(1), win_uv);</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span> </div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <a class="code" href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">execute_window_loop</a>(win, [&](<span class="keyword">const</span> Coordinates & <span class="keywordtype">id</span>)</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  {</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_y_top = vld2q_u8(in_y.ptr());</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_y_bottom = vld2q_u8(in_y.ptr() + input_ptr->plane(0)->info()->strides_in_bytes().y());</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  uint8x16x2_t ta_uv;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  ta_uv.val[0] = vld1q_u8(in_u.ptr());</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  ta_uv.val[1] = vld1q_u8(in_v.ptr());</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <span class="comment">//ta_y.val[0] = Y0 Y2 Y4 Y6 ...</span></div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="comment">//ta_y.val[1] = Y1 Y3 Y5 Y7 ...</span></div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <span class="comment">//ta_uv.val[0] = U0 U2 U4 U6 ...</span></div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  <span class="comment">//ta_uv.val[1] = V0 V2 V4 V6 ...</span></div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span> </div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  vst2q_u8(out_y.ptr(), ta_y_top);</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  vst2q_u8(out_y.ptr() + output_ptr->plane(0)->info()->strides_in_bytes().y(), ta_y_bottom);</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  vst2q_u8(out_uv.ptr(), ta_uv);</div><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>  in_y, in_u, in_v, out_y, out_uv);</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span> }</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00100">Error.h:100</a></div></div>
-<div class="ttc" id="namespacearm__compute_xhtml_a78fd1c0056e9add7ab01b8e118c0038d"><div class="ttname"><a href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">arm_compute::execute_window_loop</a></div><div class="ttdeci">void execute_window_loop(const Window &w, L &&lambda_function, Ts &&...iterators)</div><div class="ttdoc">Iterate through the passed window, automatically adjusting the iterators and calling the lambda_funct...</div></div>
+<p>References <a class="el" href="_error_8h_source.xhtml#l00124">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_window_8h_source.xhtml#l00043">Window::DimX</a>, <a class="el" href="_window_8h_source.xhtml#l00045">Window::DimY</a>, <a class="el" href="_window_8h_source.xhtml#l00090">Window::Dimension::end()</a>, <a class="el" href="_helpers_8inl_source.xhtml#l00176">execute_window_loop()</a>, <a class="el" href="_window_8inl_source.xhtml#l00040">Window::set()</a>, <a class="el" href="_window_8h_source.xhtml#l00085">Window::Dimension::start()</a>, <a class="el" href="_window_8h_source.xhtml#l00095">Window::Dimension::step()</a>, <a class="el" href="_window_8inl_source.xhtml#l00083">Window::validate()</a>, <a class="el" href="_window_8h_source.xhtml#l00128">Window::x()</a>, and <a class="el" href="_window_8h_source.xhtml#l00137">Window::y()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00551"></a><span class="lineno"> 551</span> {</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == input);</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == output);</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  win.validate();</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span> </div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <span class="keyword">const</span> <span class="keyword">auto</span> input_ptr = <span class="keyword">static_cast<</span><span class="keyword">const </span>IMultiImage *__restrict<span class="keyword">></span>(input);</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="keyword">const</span> <span class="keyword">auto</span> output_ptr = <span class="keyword">static_cast<</span>IMultiImage *__restrict<span class="keyword">></span>(output);</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span> </div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="comment">// UV's width and height are subsampled</span></div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  Window win_uv(win);</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  win_uv.set(Window::DimX, Window::Dimension(win_uv.x().start() / 2, win_uv.x().end() / 2, win_uv.x().step() / 2));</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  win_uv.set(Window::DimY, Window::Dimension(win_uv.y().start() / 2, win_uv.y().end() / 2, 1));</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  win_uv.validate();</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span> </div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  Iterator in_y(input_ptr->plane(0), win);</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  Iterator in_u(input_ptr->plane(1), win_uv);</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  Iterator in_v(input_ptr->plane(2), win_uv);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  Iterator out_y(output_ptr->plane(0), win);</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  Iterator out_uv(output_ptr->plane(1), win_uv);</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span> </div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <a class="code" href="namespacearm__compute.xhtml#a6c0dcc38187027dcb89cd9724bc5a823">execute_window_loop</a>(win, [&](<span class="keyword">const</span> Coordinates & <span class="keywordtype">id</span>)</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  {</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_y_top = vld2q_u8(in_y.ptr());</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_y_bottom = vld2q_u8(in_y.ptr() + input_ptr->plane(0)->info()->strides_in_bytes().y());</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  uint8x16x2_t ta_uv;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  ta_uv.val[0] = vld1q_u8(in_u.ptr());</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  ta_uv.val[1] = vld1q_u8(in_v.ptr());</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <span class="comment">//ta_y.val[0] = Y0 Y2 Y4 Y6 ...</span></div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="comment">//ta_y.val[1] = Y1 Y3 Y5 Y7 ...</span></div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <span class="comment">//ta_uv.val[0] = U0 U2 U4 U6 ...</span></div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  <span class="comment">//ta_uv.val[1] = V0 V2 V4 V6 ...</span></div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span> </div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  vst2q_u8(out_y.ptr(), ta_y_top);</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  vst2q_u8(out_y.ptr() + output_ptr->plane(0)->info()->strides_in_bytes().y(), ta_y_bottom);</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  vst2q_u8(out_uv.ptr(), ta_uv);</div><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>  in_y, in_u, in_v, out_y, out_uv);</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span> }</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00124">Error.h:124</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a6c0dcc38187027dcb89cd9724bc5a823"><div class="ttname"><a href="namespacearm__compute.xhtml#a6c0dcc38187027dcb89cd9724bc5a823">arm_compute::execute_window_loop</a></div><div class="ttdeci">void execute_window_loop(const Window &w, L &&lambda_function, Ts &&...iterators)</div><div class="ttdoc">Iterate through the passed window, automatically adjusting the iterators and calling the lambda_funct...</div><div class="ttdef"><b>Definition:</b> <a href="_helpers_8inl_source.xhtml#l00176">Helpers.inl:176</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -4310,13 +5550,13 @@
<p>Definition at line <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00445">445</a> of file <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml">NEColorConvertHelper.inl</a>.</p>
-<p>References <a class="el" href="_error_8h_source.xhtml#l00100">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_window_8h_source.xhtml#l00043">Window::DimX</a>, <a class="el" href="_window_8h_source.xhtml#l00045">Window::DimY</a>, <a class="el" href="_window_8h_source.xhtml#l00090">Window::Dimension::end()</a>, <a class="el" href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">execute_window_loop()</a>, <a class="el" href="classarm__compute_1_1_i_tensor.xhtml#a8df2a8ec8fcd4258450270f15651b6c9">ITensor::info()</a>, <a class="el" href="_window_8inl_source.xhtml#l00040">Window::set()</a>, <a class="el" href="_window_8h_source.xhtml#l00085">Window::Dimension::start()</a>, <a class="el" href="_window_8h_source.xhtml#l00095">Window::Dimension::step()</a>, <a class="el" href="_tensor_info_8h_source.xhtml#l00198">TensorInfo::strides_in_bytes()</a>, <a class="el" href="_window_8inl_source.xhtml#l00068">Window::validate()</a>, <a class="el" href="_window_8h_source.xhtml#l00128">Window::x()</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00085">Dimensions< T >::y()</a>, and <a class="el" href="_window_8h_source.xhtml#l00137">Window::y()</a>.</p>
-<div class="fragment"><div class="line"><a name="l00446"></a><span class="lineno"> 446</span> {</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == input);</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == output);</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  win.validate();</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span> </div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keyword">const</span> <span class="keyword">auto</span> input_ptr = <span class="keyword">static_cast<</span><span class="keyword">const </span>IMultiImage *__restrict<span class="keyword">></span>(input);</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keyword">const</span> <span class="keyword">auto</span> output_ptr = <span class="keyword">static_cast<</span><a class="code" href="namespacearm__compute.xhtml#ac20902ac1ef01783c8a8d71a9bdf1100">IImage</a> *__restrict<span class="keyword">></span>(output);</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span> </div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  constexpr <span class="keyword">auto</span> element_size = alpha ? 32 : 24;</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="keyword">const</span> <span class="keyword">auto</span> out_stride = output_ptr-><a class="code" href="classarm__compute_1_1_i_tensor.xhtml#a8df2a8ec8fcd4258450270f15651b6c9">info</a>()-><a class="code" href="classarm__compute_1_1_tensor_info.xhtml#a6b157a0e1ca25ef4d682d3bedfeae5f6">strides_in_bytes</a>().<a class="code" href="classarm__compute_1_1_dimensions.xhtml#a691c9cb93365c2e33f3429de43244098">y</a>();</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> </div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <span class="comment">// UV's width and height are subsampled</span></div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  Window win_uv(win);</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  win_uv.set(Window::DimX, Window::Dimension(win_uv.x().start() / 2, win_uv.x().end() / 2, win_uv.x().step() / 2));</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  win_uv.set(Window::DimY, Window::Dimension(win_uv.y().start() / 2, win_uv.y().end() / 2, 1));</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  win_uv.validate();</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> </div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  Iterator in_y(input_ptr->plane(0), win);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  Iterator in_u(input_ptr->plane(1), win_uv);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  Iterator in_v(input_ptr->plane(2), win_uv);</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  Iterator out(output_ptr, win);</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span> </div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <a class="code" href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">execute_window_loop</a>(win, [&](<span class="keyword">const</span> Coordinates & <span class="keywordtype">id</span>)</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  {</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_y_top = vld2q_u8(in_y.ptr());</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_y_bottom = vld2q_u8(in_y.ptr() + input_ptr->plane(0)->info()->strides_in_bytes().y());</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_u = vld1q_u8(in_u.ptr());</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_v = vld1q_u8(in_v.ptr());</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="comment">//ta_y.val[0] = Y0 Y2 Y4 Y6 ...</span></div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="comment">//ta_y.val[1] = Y1 Y3 Y5 Y7 ...</span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="comment">//ta_u.val[0] = U0 U2 U4 U6 ...</span></div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="comment">//ta_v.val[0] = V0 V2 V4 V6 ...</span></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> </div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="comment">// Convert the uint8x16x4_t to float32x4x4_t</span></div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  float32x4x4_t yvec_top, yyvec_top, yvec_bottom, yyvec_bottom, uvec, vvec;</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  convert_uint8x16_to_float32x4x4(ta_y_top.val[0], yvec_top);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  convert_uint8x16_to_float32x4x4(ta_y_top.val[1], yyvec_top);</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  convert_uint8x16_to_float32x4x4(ta_y_bottom.val[0], yvec_bottom);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  convert_uint8x16_to_float32x4x4(ta_y_bottom.val[1], yyvec_bottom);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  convert_uint8x16_to_float32x4x4(ta_u, uvec);</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  convert_uint8x16_to_float32x4x4(ta_v, vvec);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span> </div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  yuyv_to_rgb_calculation(yvec_top.val[0], uvec.val[0], yyvec_top.val[0], vvec.val[0], out.ptr() + 0 * element_size, alpha);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  yuyv_to_rgb_calculation(yvec_top.val[1], uvec.val[1], yyvec_top.val[1], vvec.val[1], out.ptr() + 1 * element_size, alpha);</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  yuyv_to_rgb_calculation(yvec_top.val[2], uvec.val[2], yyvec_top.val[2], vvec.val[2], out.ptr() + 2 * element_size, alpha);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  yuyv_to_rgb_calculation(yvec_top.val[3], uvec.val[3], yyvec_top.val[3], vvec.val[3], out.ptr() + 3 * element_size, alpha);</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>  yuyv_to_rgb_calculation(yvec_bottom.val[0], uvec.val[0], yyvec_bottom.val[0], vvec.val[0], out.ptr() + out_stride + 0 * element_size, alpha);</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  yuyv_to_rgb_calculation(yvec_bottom.val[1], uvec.val[1], yyvec_bottom.val[1], vvec.val[1], out.ptr() + out_stride + 1 * element_size, alpha);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  yuyv_to_rgb_calculation(yvec_bottom.val[2], uvec.val[2], yyvec_bottom.val[2], vvec.val[2], out.ptr() + out_stride + 2 * element_size, alpha);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  yuyv_to_rgb_calculation(yvec_bottom.val[3], uvec.val[3], yyvec_bottom.val[3], vvec.val[3], out.ptr() + out_stride + 3 * element_size, alpha);</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  },</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  in_y, in_u, in_v, out);</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span> }</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00100">Error.h:100</a></div></div>
-<div class="ttc" id="classarm__compute_1_1_i_tensor_xhtml_a8df2a8ec8fcd4258450270f15651b6c9"><div class="ttname"><a href="classarm__compute_1_1_i_tensor.xhtml#a8df2a8ec8fcd4258450270f15651b6c9">arm_compute::ITensor::info</a></div><div class="ttdeci">virtual TensorInfo * info() const =0</div><div class="ttdoc">Interface to be implemented by the child class to return the tensor&#39;s metadata. </div></div>
-<div class="ttc" id="namespacearm__compute_xhtml_a78fd1c0056e9add7ab01b8e118c0038d"><div class="ttname"><a href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">arm_compute::execute_window_loop</a></div><div class="ttdeci">void execute_window_loop(const Window &w, L &&lambda_function, Ts &&...iterators)</div><div class="ttdoc">Iterate through the passed window, automatically adjusting the iterators and calling the lambda_funct...</div></div>
+<p>References <a class="el" href="_error_8h_source.xhtml#l00124">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_window_8h_source.xhtml#l00043">Window::DimX</a>, <a class="el" href="_window_8h_source.xhtml#l00045">Window::DimY</a>, <a class="el" href="_window_8h_source.xhtml#l00090">Window::Dimension::end()</a>, <a class="el" href="_helpers_8inl_source.xhtml#l00176">execute_window_loop()</a>, <a class="el" href="classarm__compute_1_1_i_tensor.xhtml#a0e95dc1e53c361348314873b168ae237">ITensor::info()</a>, <a class="el" href="_window_8inl_source.xhtml#l00040">Window::set()</a>, <a class="el" href="_window_8h_source.xhtml#l00085">Window::Dimension::start()</a>, <a class="el" href="_window_8h_source.xhtml#l00095">Window::Dimension::step()</a>, <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml#a6b14f175bf5281f57b561e2d4e4b1f1f">ITensorInfo::strides_in_bytes()</a>, <a class="el" href="_window_8inl_source.xhtml#l00083">Window::validate()</a>, <a class="el" href="_window_8h_source.xhtml#l00128">Window::x()</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00086">Dimensions< T >::y()</a>, and <a class="el" href="_window_8h_source.xhtml#l00137">Window::y()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00446"></a><span class="lineno"> 446</span> {</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == input);</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == output);</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  win.validate();</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span> </div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keyword">const</span> <span class="keyword">auto</span> input_ptr = <span class="keyword">static_cast<</span><span class="keyword">const </span>IMultiImage *__restrict<span class="keyword">></span>(input);</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keyword">const</span> <span class="keyword">auto</span> output_ptr = <span class="keyword">static_cast<</span><a class="code" href="namespacearm__compute.xhtml#ac20902ac1ef01783c8a8d71a9bdf1100">IImage</a> *__restrict<span class="keyword">></span>(output);</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span> </div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  constexpr <span class="keyword">auto</span> element_size = alpha ? 32 : 24;</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="keyword">const</span> <span class="keyword">auto</span> out_stride = output_ptr-><a class="code" href="classarm__compute_1_1_i_tensor.xhtml#a0e95dc1e53c361348314873b168ae237">info</a>()-><a class="code" href="classarm__compute_1_1_i_tensor_info.xhtml#a6b14f175bf5281f57b561e2d4e4b1f1f">strides_in_bytes</a>().<a class="code" href="classarm__compute_1_1_dimensions.xhtml#a691c9cb93365c2e33f3429de43244098">y</a>();</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> </div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <span class="comment">// UV's width and height are subsampled</span></div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  Window win_uv(win);</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  win_uv.set(Window::DimX, Window::Dimension(win_uv.x().start() / 2, win_uv.x().end() / 2, win_uv.x().step() / 2));</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  win_uv.set(Window::DimY, Window::Dimension(win_uv.y().start() / 2, win_uv.y().end() / 2, 1));</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  win_uv.validate();</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> </div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  Iterator in_y(input_ptr->plane(0), win);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  Iterator in_u(input_ptr->plane(1), win_uv);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  Iterator in_v(input_ptr->plane(2), win_uv);</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  Iterator out(output_ptr, win);</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span> </div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <a class="code" href="namespacearm__compute.xhtml#a6c0dcc38187027dcb89cd9724bc5a823">execute_window_loop</a>(win, [&](<span class="keyword">const</span> Coordinates & <span class="keywordtype">id</span>)</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  {</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_y_top = vld2q_u8(in_y.ptr());</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_y_bottom = vld2q_u8(in_y.ptr() + input_ptr->plane(0)->info()->strides_in_bytes().y());</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_u = vld1q_u8(in_u.ptr());</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_v = vld1q_u8(in_v.ptr());</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="comment">//ta_y.val[0] = Y0 Y2 Y4 Y6 ...</span></div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="comment">//ta_y.val[1] = Y1 Y3 Y5 Y7 ...</span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="comment">//ta_u.val[0] = U0 U2 U4 U6 ...</span></div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="comment">//ta_v.val[0] = V0 V2 V4 V6 ...</span></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> </div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="comment">// Convert the uint8x16x4_t to float32x4x4_t</span></div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  float32x4x4_t yvec_top, yyvec_top, yvec_bottom, yyvec_bottom, uvec, vvec;</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  convert_uint8x16_to_float32x4x4(ta_y_top.val[0], yvec_top);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  convert_uint8x16_to_float32x4x4(ta_y_top.val[1], yyvec_top);</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  convert_uint8x16_to_float32x4x4(ta_y_bottom.val[0], yvec_bottom);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  convert_uint8x16_to_float32x4x4(ta_y_bottom.val[1], yyvec_bottom);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  convert_uint8x16_to_float32x4x4(ta_u, uvec);</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  convert_uint8x16_to_float32x4x4(ta_v, vvec);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span> </div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  yuyv_to_rgb_calculation(yvec_top.val[0], uvec.val[0], yyvec_top.val[0], vvec.val[0], out.ptr() + 0 * element_size, alpha);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  yuyv_to_rgb_calculation(yvec_top.val[1], uvec.val[1], yyvec_top.val[1], vvec.val[1], out.ptr() + 1 * element_size, alpha);</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  yuyv_to_rgb_calculation(yvec_top.val[2], uvec.val[2], yyvec_top.val[2], vvec.val[2], out.ptr() + 2 * element_size, alpha);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  yuyv_to_rgb_calculation(yvec_top.val[3], uvec.val[3], yyvec_top.val[3], vvec.val[3], out.ptr() + 3 * element_size, alpha);</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>  yuyv_to_rgb_calculation(yvec_bottom.val[0], uvec.val[0], yyvec_bottom.val[0], vvec.val[0], out.ptr() + out_stride + 0 * element_size, alpha);</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  yuyv_to_rgb_calculation(yvec_bottom.val[1], uvec.val[1], yyvec_bottom.val[1], vvec.val[1], out.ptr() + out_stride + 1 * element_size, alpha);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  yuyv_to_rgb_calculation(yvec_bottom.val[2], uvec.val[2], yyvec_bottom.val[2], vvec.val[2], out.ptr() + out_stride + 2 * element_size, alpha);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  yuyv_to_rgb_calculation(yvec_bottom.val[3], uvec.val[3], yyvec_bottom.val[3], vvec.val[3], out.ptr() + out_stride + 3 * element_size, alpha);</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  },</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  in_y, in_u, in_v, out);</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span> }</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00124">Error.h:124</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a6c0dcc38187027dcb89cd9724bc5a823"><div class="ttname"><a href="namespacearm__compute.xhtml#a6c0dcc38187027dcb89cd9724bc5a823">arm_compute::execute_window_loop</a></div><div class="ttdeci">void execute_window_loop(const Window &w, L &&lambda_function, Ts &&...iterators)</div><div class="ttdoc">Iterate through the passed window, automatically adjusting the iterators and calling the lambda_funct...</div><div class="ttdef"><b>Definition:</b> <a href="_helpers_8inl_source.xhtml#l00176">Helpers.inl:176</a></div></div>
+<div class="ttc" id="classarm__compute_1_1_i_tensor_xhtml_a0e95dc1e53c361348314873b168ae237"><div class="ttname"><a href="classarm__compute_1_1_i_tensor.xhtml#a0e95dc1e53c361348314873b168ae237">arm_compute::ITensor::info</a></div><div class="ttdeci">virtual ITensorInfo * info() const =0</div><div class="ttdoc">Interface to be implemented by the child class to return the tensor&#39;s metadata. </div></div>
<div class="ttc" id="namespacearm__compute_xhtml_ac20902ac1ef01783c8a8d71a9bdf1100"><div class="ttname"><a href="namespacearm__compute.xhtml#ac20902ac1ef01783c8a8d71a9bdf1100">arm_compute::IImage</a></div><div class="ttdeci">ITensor IImage</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_corner_candidates_kernel_8h_source.xhtml#l00036">CPPCornerCandidatesKernel.h:36</a></div></div>
-<div class="ttc" id="classarm__compute_1_1_dimensions_xhtml_a691c9cb93365c2e33f3429de43244098"><div class="ttname"><a href="classarm__compute_1_1_dimensions.xhtml#a691c9cb93365c2e33f3429de43244098">arm_compute::Dimensions::y</a></div><div class="ttdeci">T y() const </div><div class="ttdoc">Alias to access the size of the second dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_dimensions_8h_source.xhtml#l00085">Dimensions.h:85</a></div></div>
-<div class="ttc" id="classarm__compute_1_1_tensor_info_xhtml_a6b157a0e1ca25ef4d682d3bedfeae5f6"><div class="ttname"><a href="classarm__compute_1_1_tensor_info.xhtml#a6b157a0e1ca25ef4d682d3bedfeae5f6">arm_compute::TensorInfo::strides_in_bytes</a></div><div class="ttdeci">const Strides & strides_in_bytes() const </div><div class="ttdoc">The strides in bytes for accessing each dimension of the tensor. </div><div class="ttdef"><b>Definition:</b> <a href="_tensor_info_8h_source.xhtml#l00198">TensorInfo.h:198</a></div></div>
+<div class="ttc" id="classarm__compute_1_1_dimensions_xhtml_a691c9cb93365c2e33f3429de43244098"><div class="ttname"><a href="classarm__compute_1_1_dimensions.xhtml#a691c9cb93365c2e33f3429de43244098">arm_compute::Dimensions::y</a></div><div class="ttdeci">T y() const </div><div class="ttdoc">Alias to access the size of the second dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_dimensions_8h_source.xhtml#l00086">Dimensions.h:86</a></div></div>
+<div class="ttc" id="classarm__compute_1_1_i_tensor_info_xhtml_a6b14f175bf5281f57b561e2d4e4b1f1f"><div class="ttname"><a href="classarm__compute_1_1_i_tensor_info.xhtml#a6b14f175bf5281f57b561e2d4e4b1f1f">arm_compute::ITensorInfo::strides_in_bytes</a></div><div class="ttdeci">virtual const Strides & strides_in_bytes() const =0</div><div class="ttdoc">The strides in bytes for accessing each dimension of the tensor. </div></div>
</div><!-- fragment -->
</div>
</div>
@@ -4352,9 +5592,9 @@
<p>Definition at line <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00737">737</a> of file <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml">NEColorConvertHelper.inl</a>.</p>
-<p>References <a class="el" href="_error_8h_source.xhtml#l00100">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_window_8h_source.xhtml#l00043">Window::DimX</a>, <a class="el" href="_window_8h_source.xhtml#l00045">Window::DimY</a>, <a class="el" href="_window_8h_source.xhtml#l00090">Window::Dimension::end()</a>, <a class="el" href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">execute_window_loop()</a>, <a class="el" href="_window_8inl_source.xhtml#l00040">Window::set()</a>, <a class="el" href="_window_8h_source.xhtml#l00085">Window::Dimension::start()</a>, <a class="el" href="_window_8h_source.xhtml#l00095">Window::Dimension::step()</a>, <a class="el" href="_window_8inl_source.xhtml#l00068">Window::validate()</a>, <a class="el" href="_window_8h_source.xhtml#l00128">Window::x()</a>, and <a class="el" href="_window_8h_source.xhtml#l00137">Window::y()</a>.</p>
-<div class="fragment"><div class="line"><a name="l00738"></a><span class="lineno"> 738</span> {</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == input);</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == output);</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  win.validate();</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span> </div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  <span class="keyword">const</span> <span class="keyword">auto</span> input_ptr = <span class="keyword">static_cast<</span><span class="keyword">const </span>IMultiImage *__restrict<span class="keyword">></span>(input);</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  <span class="keyword">const</span> <span class="keyword">auto</span> output_ptr = <span class="keyword">static_cast<</span>IMultiImage *__restrict<span class="keyword">></span>(output);</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span> </div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  <span class="comment">// UV's width and height are subsampled</span></div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  Window win_uv(win);</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  win_uv.set(Window::DimX, Window::Dimension(win_uv.x().start() / 2, win_uv.x().end() / 2, win_uv.x().step() / 2));</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  win_uv.set(Window::DimY, Window::Dimension(win_uv.y().start() / 2, win_uv.y().end() / 2, 1));</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  win_uv.validate();</div><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>  Iterator in_y(input_ptr->plane(0), win);</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  Iterator in_u(input_ptr->plane(1), win_uv);</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  Iterator in_v(input_ptr->plane(2), win_uv);</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  Iterator out_y(output_ptr->plane(0), win);</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  Iterator out_u(output_ptr->plane(1), win);</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  Iterator out_v(output_ptr->plane(2), win);</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span> </div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  <a class="code" href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">execute_window_loop</a>(win, [&](<span class="keyword">const</span> Coordinates & <span class="keywordtype">id</span>)</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  {</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_y_top = vld2q_u8(in_y.ptr());</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_y_bottom = vld2q_u8(in_y.ptr() + input_ptr->plane(0)->info()->strides_in_bytes().y());</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_u = vld1q_u8(in_u.ptr());</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_v = vld1q_u8(in_v.ptr());</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  <span class="comment">//ta_y.val[0] = Y0 Y2 Y4 Y6 ...</span></div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  <span class="comment">//ta_y.val[1] = Y1 Y3 Y5 Y7 ...</span></div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  <span class="comment">//ta_u = U0 U2 U4 U6 ...</span></div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  <span class="comment">//ta_v = V0 V2 V4 V6 ...</span></div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span> </div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  vst2q_u8(out_y.ptr(), ta_y_top);</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  vst2q_u8(out_y.ptr() + output_ptr->plane(0)->info()->strides_in_bytes().y(), ta_y_bottom);</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span> </div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  uint8x16x2_t uvec;</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  uvec.val[0] = ta_u;</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  uvec.val[1] = ta_u;</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  vst2q_u8(out_u.ptr(), uvec);</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  vst2q_u8(out_u.ptr() + output_ptr->plane(1)->info()->strides_in_bytes().y(), uvec);</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span> </div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  uint8x16x2_t vvec;</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  vvec.val[0] = ta_v;</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  vvec.val[1] = ta_v;</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  vst2q_u8(out_v.ptr(), vvec);</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  vst2q_u8(out_v.ptr() + output_ptr->plane(2)->info()->strides_in_bytes().y(), vvec);</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  },</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  in_y, in_u, in_v, out_y, out_u, out_v);</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span> }</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00100">Error.h:100</a></div></div>
-<div class="ttc" id="namespacearm__compute_xhtml_a78fd1c0056e9add7ab01b8e118c0038d"><div class="ttname"><a href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">arm_compute::execute_window_loop</a></div><div class="ttdeci">void execute_window_loop(const Window &w, L &&lambda_function, Ts &&...iterators)</div><div class="ttdoc">Iterate through the passed window, automatically adjusting the iterators and calling the lambda_funct...</div></div>
+<p>References <a class="el" href="_error_8h_source.xhtml#l00124">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_window_8h_source.xhtml#l00043">Window::DimX</a>, <a class="el" href="_window_8h_source.xhtml#l00045">Window::DimY</a>, <a class="el" href="_window_8h_source.xhtml#l00090">Window::Dimension::end()</a>, <a class="el" href="_helpers_8inl_source.xhtml#l00176">execute_window_loop()</a>, <a class="el" href="_window_8inl_source.xhtml#l00040">Window::set()</a>, <a class="el" href="_window_8h_source.xhtml#l00085">Window::Dimension::start()</a>, <a class="el" href="_window_8h_source.xhtml#l00095">Window::Dimension::step()</a>, <a class="el" href="_window_8inl_source.xhtml#l00083">Window::validate()</a>, <a class="el" href="_window_8h_source.xhtml#l00128">Window::x()</a>, and <a class="el" href="_window_8h_source.xhtml#l00137">Window::y()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00738"></a><span class="lineno"> 738</span> {</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == input);</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == output);</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  win.validate();</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span> </div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  <span class="keyword">const</span> <span class="keyword">auto</span> input_ptr = <span class="keyword">static_cast<</span><span class="keyword">const </span>IMultiImage *__restrict<span class="keyword">></span>(input);</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  <span class="keyword">const</span> <span class="keyword">auto</span> output_ptr = <span class="keyword">static_cast<</span>IMultiImage *__restrict<span class="keyword">></span>(output);</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span> </div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  <span class="comment">// UV's width and height are subsampled</span></div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  Window win_uv(win);</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  win_uv.set(Window::DimX, Window::Dimension(win_uv.x().start() / 2, win_uv.x().end() / 2, win_uv.x().step() / 2));</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  win_uv.set(Window::DimY, Window::Dimension(win_uv.y().start() / 2, win_uv.y().end() / 2, 1));</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  win_uv.validate();</div><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>  Iterator in_y(input_ptr->plane(0), win);</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  Iterator in_u(input_ptr->plane(1), win_uv);</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  Iterator in_v(input_ptr->plane(2), win_uv);</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  Iterator out_y(output_ptr->plane(0), win);</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  Iterator out_u(output_ptr->plane(1), win);</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  Iterator out_v(output_ptr->plane(2), win);</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span> </div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  <a class="code" href="namespacearm__compute.xhtml#a6c0dcc38187027dcb89cd9724bc5a823">execute_window_loop</a>(win, [&](<span class="keyword">const</span> Coordinates & <span class="keywordtype">id</span>)</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  {</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_y_top = vld2q_u8(in_y.ptr());</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_y_bottom = vld2q_u8(in_y.ptr() + input_ptr->plane(0)->info()->strides_in_bytes().y());</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_u = vld1q_u8(in_u.ptr());</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_v = vld1q_u8(in_v.ptr());</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  <span class="comment">//ta_y.val[0] = Y0 Y2 Y4 Y6 ...</span></div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  <span class="comment">//ta_y.val[1] = Y1 Y3 Y5 Y7 ...</span></div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  <span class="comment">//ta_u = U0 U2 U4 U6 ...</span></div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  <span class="comment">//ta_v = V0 V2 V4 V6 ...</span></div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span> </div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  vst2q_u8(out_y.ptr(), ta_y_top);</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  vst2q_u8(out_y.ptr() + output_ptr->plane(0)->info()->strides_in_bytes().y(), ta_y_bottom);</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span> </div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  uint8x16x2_t uvec;</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  uvec.val[0] = ta_u;</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  uvec.val[1] = ta_u;</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  vst2q_u8(out_u.ptr(), uvec);</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  vst2q_u8(out_u.ptr() + output_ptr->plane(1)->info()->strides_in_bytes().y(), uvec);</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span> </div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  uint8x16x2_t vvec;</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  vvec.val[0] = ta_v;</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  vvec.val[1] = ta_v;</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  vst2q_u8(out_v.ptr(), vvec);</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  vst2q_u8(out_v.ptr() + output_ptr->plane(2)->info()->strides_in_bytes().y(), vvec);</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  },</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  in_y, in_u, in_v, out_y, out_u, out_v);</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span> }</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00124">Error.h:124</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a6c0dcc38187027dcb89cd9724bc5a823"><div class="ttname"><a href="namespacearm__compute.xhtml#a6c0dcc38187027dcb89cd9724bc5a823">arm_compute::execute_window_loop</a></div><div class="ttdeci">void execute_window_loop(const Window &w, L &&lambda_function, Ts &&...iterators)</div><div class="ttdoc">Iterate through the passed window, automatically adjusting the iterators and calling the lambda_funct...</div><div class="ttdef"><b>Definition:</b> <a href="_helpers_8inl_source.xhtml#l00176">Helpers.inl:176</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -4390,9 +5630,9 @@
<p>Definition at line <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00591">591</a> of file <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml">NEColorConvertHelper.inl</a>.</p>
-<p>References <a class="el" href="_error_8h_source.xhtml#l00100">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_window_8h_source.xhtml#l00043">Window::DimX</a>, <a class="el" href="_window_8h_source.xhtml#l00045">Window::DimY</a>, <a class="el" href="_window_8h_source.xhtml#l00090">Window::Dimension::end()</a>, <a class="el" href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">execute_window_loop()</a>, <a class="el" href="_window_8inl_source.xhtml#l00040">Window::set()</a>, <a class="el" href="_window_8h_source.xhtml#l00085">Window::Dimension::start()</a>, <a class="el" href="_window_8h_source.xhtml#l00095">Window::Dimension::step()</a>, <a class="el" href="_window_8inl_source.xhtml#l00068">Window::validate()</a>, <a class="el" href="_window_8h_source.xhtml#l00128">Window::x()</a>, and <a class="el" href="_window_8h_source.xhtml#l00137">Window::y()</a>.</p>
-<div class="fragment"><div class="line"><a name="l00592"></a><span class="lineno"> 592</span> {</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == input);</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == output);</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  win.validate();</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span> </div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  <span class="keyword">const</span> <span class="keyword">auto</span> input_ptr = <span class="keyword">static_cast<</span><span class="keyword">const </span>IMultiImage *__restrict<span class="keyword">></span>(input);</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  <span class="keyword">const</span> <span class="keyword">auto</span> output_ptr = <span class="keyword">static_cast<</span>IMultiImage *__restrict<span class="keyword">></span>(output);</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span> </div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  constexpr <span class="keyword">auto</span> shift = uv ? 0 : 1;</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">// UV's width and height are subsampled</span></div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  Window win_uv(win);</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  win_uv.set(Window::DimX, Window::Dimension(win_uv.x().start() / 2, win_uv.x().end() / 2, win_uv.x().step() / 2));</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  win_uv.set(Window::DimY, Window::Dimension(win_uv.y().start() / 2, win_uv.y().end() / 2, 1));</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  win_uv.validate();</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span> </div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  Iterator in_y(input_ptr->plane(0), win);</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  Iterator in_uv(input_ptr->plane(1), win_uv);</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  Iterator out_y(output_ptr->plane(0), win);</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  Iterator out_u(output_ptr->plane(1), win_uv);</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  Iterator out_v(output_ptr->plane(2), win_uv);</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span> </div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  <a class="code" href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">execute_window_loop</a>(win, [&](<span class="keyword">const</span> Coordinates & <span class="keywordtype">id</span>)</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  {</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_y_top = vld2q_u8(in_y.ptr());</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_y_bottom = vld2q_u8(in_y.ptr() + input_ptr->plane(0)->info()->strides_in_bytes().y());</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_uv = vld2q_u8(in_uv.ptr());</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <span class="comment">//ta_y.val[0] = Y0 Y2 Y4 Y6 ...</span></div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  <span class="comment">//ta_y.val[1] = Y1 Y3 Y5 Y7 ...</span></div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <span class="comment">//ta_uv.val[0] = U0 U2 U4 U6 ...</span></div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  <span class="comment">//ta_uv.val[1] = V0 V2 V4 V6 ...</span></div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span> </div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  vst2q_u8(out_y.ptr(), ta_y_top);</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  vst2q_u8(out_y.ptr() + output_ptr->plane(0)->info()->strides_in_bytes().y(), ta_y_bottom);</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  vst1q_u8(out_u.ptr(), ta_uv.val[0 + shift]);</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  vst1q_u8(out_v.ptr(), ta_uv.val[1 - shift]);</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  },</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  in_y, in_uv, out_y, out_u, out_v);</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span> }</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00100">Error.h:100</a></div></div>
-<div class="ttc" id="namespacearm__compute_xhtml_a78fd1c0056e9add7ab01b8e118c0038d"><div class="ttname"><a href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">arm_compute::execute_window_loop</a></div><div class="ttdeci">void execute_window_loop(const Window &w, L &&lambda_function, Ts &&...iterators)</div><div class="ttdoc">Iterate through the passed window, automatically adjusting the iterators and calling the lambda_funct...</div></div>
+<p>References <a class="el" href="_error_8h_source.xhtml#l00124">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_window_8h_source.xhtml#l00043">Window::DimX</a>, <a class="el" href="_window_8h_source.xhtml#l00045">Window::DimY</a>, <a class="el" href="_window_8h_source.xhtml#l00090">Window::Dimension::end()</a>, <a class="el" href="_helpers_8inl_source.xhtml#l00176">execute_window_loop()</a>, <a class="el" href="_window_8inl_source.xhtml#l00040">Window::set()</a>, <a class="el" href="_window_8h_source.xhtml#l00085">Window::Dimension::start()</a>, <a class="el" href="_window_8h_source.xhtml#l00095">Window::Dimension::step()</a>, <a class="el" href="_window_8inl_source.xhtml#l00083">Window::validate()</a>, <a class="el" href="_window_8h_source.xhtml#l00128">Window::x()</a>, and <a class="el" href="_window_8h_source.xhtml#l00137">Window::y()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00592"></a><span class="lineno"> 592</span> {</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == input);</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == output);</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  win.validate();</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span> </div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  <span class="keyword">const</span> <span class="keyword">auto</span> input_ptr = <span class="keyword">static_cast<</span><span class="keyword">const </span>IMultiImage *__restrict<span class="keyword">></span>(input);</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  <span class="keyword">const</span> <span class="keyword">auto</span> output_ptr = <span class="keyword">static_cast<</span>IMultiImage *__restrict<span class="keyword">></span>(output);</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span> </div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  constexpr <span class="keyword">auto</span> shift = uv ? 0 : 1;</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">// UV's width and height are subsampled</span></div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  Window win_uv(win);</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  win_uv.set(Window::DimX, Window::Dimension(win_uv.x().start() / 2, win_uv.x().end() / 2, win_uv.x().step() / 2));</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  win_uv.set(Window::DimY, Window::Dimension(win_uv.y().start() / 2, win_uv.y().end() / 2, 1));</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  win_uv.validate();</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span> </div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  Iterator in_y(input_ptr->plane(0), win);</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  Iterator in_uv(input_ptr->plane(1), win_uv);</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  Iterator out_y(output_ptr->plane(0), win);</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  Iterator out_u(output_ptr->plane(1), win_uv);</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  Iterator out_v(output_ptr->plane(2), win_uv);</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span> </div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  <a class="code" href="namespacearm__compute.xhtml#a6c0dcc38187027dcb89cd9724bc5a823">execute_window_loop</a>(win, [&](<span class="keyword">const</span> Coordinates & <span class="keywordtype">id</span>)</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  {</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_y_top = vld2q_u8(in_y.ptr());</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_y_bottom = vld2q_u8(in_y.ptr() + input_ptr->plane(0)->info()->strides_in_bytes().y());</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_uv = vld2q_u8(in_uv.ptr());</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <span class="comment">//ta_y.val[0] = Y0 Y2 Y4 Y6 ...</span></div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  <span class="comment">//ta_y.val[1] = Y1 Y3 Y5 Y7 ...</span></div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <span class="comment">//ta_uv.val[0] = U0 U2 U4 U6 ...</span></div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  <span class="comment">//ta_uv.val[1] = V0 V2 V4 V6 ...</span></div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span> </div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  vst2q_u8(out_y.ptr(), ta_y_top);</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  vst2q_u8(out_y.ptr() + output_ptr->plane(0)->info()->strides_in_bytes().y(), ta_y_bottom);</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  vst1q_u8(out_u.ptr(), ta_uv.val[0 + shift]);</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  vst1q_u8(out_v.ptr(), ta_uv.val[1 - shift]);</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  },</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  in_y, in_uv, out_y, out_u, out_v);</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span> }</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00124">Error.h:124</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a6c0dcc38187027dcb89cd9724bc5a823"><div class="ttname"><a href="namespacearm__compute.xhtml#a6c0dcc38187027dcb89cd9724bc5a823">arm_compute::execute_window_loop</a></div><div class="ttdeci">void execute_window_loop(const Window &w, L &&lambda_function, Ts &&...iterators)</div><div class="ttdoc">Iterate through the passed window, automatically adjusting the iterators and calling the lambda_funct...</div><div class="ttdef"><b>Definition:</b> <a href="_helpers_8inl_source.xhtml#l00176">Helpers.inl:176</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -4428,13 +5668,13 @@
<p>Definition at line <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00389">389</a> of file <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml">NEColorConvertHelper.inl</a>.</p>
-<p>References <a class="el" href="_error_8h_source.xhtml#l00100">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_window_8h_source.xhtml#l00043">Window::DimX</a>, <a class="el" href="_window_8h_source.xhtml#l00045">Window::DimY</a>, <a class="el" href="_window_8h_source.xhtml#l00090">Window::Dimension::end()</a>, <a class="el" href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">execute_window_loop()</a>, <a class="el" href="classarm__compute_1_1_i_tensor.xhtml#a8df2a8ec8fcd4258450270f15651b6c9">ITensor::info()</a>, <a class="el" href="_window_8inl_source.xhtml#l00040">Window::set()</a>, <a class="el" href="_window_8h_source.xhtml#l00085">Window::Dimension::start()</a>, <a class="el" href="_window_8h_source.xhtml#l00095">Window::Dimension::step()</a>, <a class="el" href="_tensor_info_8h_source.xhtml#l00198">TensorInfo::strides_in_bytes()</a>, <a class="el" href="_window_8inl_source.xhtml#l00068">Window::validate()</a>, <a class="el" href="_window_8h_source.xhtml#l00128">Window::x()</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00085">Dimensions< T >::y()</a>, and <a class="el" href="_window_8h_source.xhtml#l00137">Window::y()</a>.</p>
-<div class="fragment"><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> {</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == input);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == output);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  win.validate();</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="keyword">const</span> <span class="keyword">auto</span> input_ptr = <span class="keyword">static_cast<</span><span class="keyword">const </span>IMultiImage *__restrict<span class="keyword">></span>(input);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="keyword">const</span> <span class="keyword">auto</span> output_ptr = <span class="keyword">static_cast<</span><a class="code" href="namespacearm__compute.xhtml#ac20902ac1ef01783c8a8d71a9bdf1100">IImage</a> *__restrict<span class="keyword">></span>(output);</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span> </div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  constexpr <span class="keyword">auto</span> element_size = alpha ? 32 : 24;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="keyword">const</span> <span class="keyword">auto</span> out_stride = output_ptr-><a class="code" href="classarm__compute_1_1_i_tensor.xhtml#a8df2a8ec8fcd4258450270f15651b6c9">info</a>()-><a class="code" href="classarm__compute_1_1_tensor_info.xhtml#a6b157a0e1ca25ef4d682d3bedfeae5f6">strides_in_bytes</a>().<a class="code" href="classarm__compute_1_1_dimensions.xhtml#a691c9cb93365c2e33f3429de43244098">y</a>();</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  constexpr <span class="keyword">auto</span> shift = uv ? 0 : 1;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> </div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="comment">// UV's width and height are subsampled</span></div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  Window win_uv(win);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  win_uv.set(Window::DimX, Window::Dimension(win_uv.x().start() / 2, win_uv.x().end() / 2, win.x().step() / 2));</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  win_uv.set(Window::DimY, Window::Dimension(win_uv.y().start() / 2, win_uv.y().end() / 2, 1));</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  win_uv.validate();</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span> </div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  Iterator in_y(input_ptr->plane(0), win);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  Iterator in_uv(input_ptr->plane(1), win_uv);</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  Iterator out(output_ptr, win);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> </div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <a class="code" href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">execute_window_loop</a>(win, [&](<span class="keyword">const</span> Coordinates & <span class="keywordtype">id</span>)</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  {</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_y_top = vld2q_u8(in_y.ptr());</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_y_bottom = vld2q_u8(in_y.ptr() + input_ptr->plane(0)->info()->strides_in_bytes().y());</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_uv = vld2q_u8(in_uv.ptr());</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="comment">//ta_y.val[0] = Y0 Y2 Y4 Y6 ...</span></div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="comment">//ta_y.val[1] = Y1 Y3 Y5 Y7 ...</span></div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <span class="comment">//ta_uv.val[0] = U0 U2 U4 U6 ...</span></div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="comment">//ta_uv.val[1] = V0 V2 V4 V6 ...</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> </div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="comment">// Convert the uint8x16x4_t to float32x4x4_t</span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  float32x4x4_t yvec_top, yyvec_top, yvec_bottom, yyvec_bottom, uvec, vvec;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  convert_uint8x16_to_float32x4x4(ta_y_top.val[0], yvec_top);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  convert_uint8x16_to_float32x4x4(ta_y_top.val[1], yyvec_top);</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  convert_uint8x16_to_float32x4x4(ta_y_bottom.val[0], yvec_bottom);</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  convert_uint8x16_to_float32x4x4(ta_y_bottom.val[1], yyvec_bottom);</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  convert_uint8x16_to_float32x4x4(ta_uv.val[0 + shift], uvec);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  convert_uint8x16_to_float32x4x4(ta_uv.val[1 - shift], vvec);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span> </div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  yuyv_to_rgb_calculation(yvec_top.val[0], uvec.val[0], yyvec_top.val[0], vvec.val[0], out.ptr() + 0 * element_size, alpha);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  yuyv_to_rgb_calculation(yvec_top.val[1], uvec.val[1], yyvec_top.val[1], vvec.val[1], out.ptr() + 1 * element_size, alpha);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  yuyv_to_rgb_calculation(yvec_top.val[2], uvec.val[2], yyvec_top.val[2], vvec.val[2], out.ptr() + 2 * element_size, alpha);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  yuyv_to_rgb_calculation(yvec_top.val[3], uvec.val[3], yyvec_top.val[3], vvec.val[3], out.ptr() + 3 * element_size, alpha);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> </div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  yuyv_to_rgb_calculation(yvec_bottom.val[0], uvec.val[0], yyvec_bottom.val[0], vvec.val[0], out.ptr() + out_stride + 0 * element_size, alpha);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  yuyv_to_rgb_calculation(yvec_bottom.val[1], uvec.val[1], yyvec_bottom.val[1], vvec.val[1], out.ptr() + out_stride + 1 * element_size, alpha);</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  yuyv_to_rgb_calculation(yvec_bottom.val[2], uvec.val[2], yyvec_bottom.val[2], vvec.val[2], out.ptr() + out_stride + 2 * element_size, alpha);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  yuyv_to_rgb_calculation(yvec_bottom.val[3], uvec.val[3], yyvec_bottom.val[3], vvec.val[3], out.ptr() + out_stride + 3 * element_size, alpha);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  },</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  in_y, in_uv, out);</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span> }</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00100">Error.h:100</a></div></div>
-<div class="ttc" id="classarm__compute_1_1_i_tensor_xhtml_a8df2a8ec8fcd4258450270f15651b6c9"><div class="ttname"><a href="classarm__compute_1_1_i_tensor.xhtml#a8df2a8ec8fcd4258450270f15651b6c9">arm_compute::ITensor::info</a></div><div class="ttdeci">virtual TensorInfo * info() const =0</div><div class="ttdoc">Interface to be implemented by the child class to return the tensor&#39;s metadata. </div></div>
-<div class="ttc" id="namespacearm__compute_xhtml_a78fd1c0056e9add7ab01b8e118c0038d"><div class="ttname"><a href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">arm_compute::execute_window_loop</a></div><div class="ttdeci">void execute_window_loop(const Window &w, L &&lambda_function, Ts &&...iterators)</div><div class="ttdoc">Iterate through the passed window, automatically adjusting the iterators and calling the lambda_funct...</div></div>
+<p>References <a class="el" href="_error_8h_source.xhtml#l00124">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_window_8h_source.xhtml#l00043">Window::DimX</a>, <a class="el" href="_window_8h_source.xhtml#l00045">Window::DimY</a>, <a class="el" href="_window_8h_source.xhtml#l00090">Window::Dimension::end()</a>, <a class="el" href="_helpers_8inl_source.xhtml#l00176">execute_window_loop()</a>, <a class="el" href="classarm__compute_1_1_i_tensor.xhtml#a0e95dc1e53c361348314873b168ae237">ITensor::info()</a>, <a class="el" href="_window_8inl_source.xhtml#l00040">Window::set()</a>, <a class="el" href="_window_8h_source.xhtml#l00085">Window::Dimension::start()</a>, <a class="el" href="_window_8h_source.xhtml#l00095">Window::Dimension::step()</a>, <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml#a6b14f175bf5281f57b561e2d4e4b1f1f">ITensorInfo::strides_in_bytes()</a>, <a class="el" href="_window_8inl_source.xhtml#l00083">Window::validate()</a>, <a class="el" href="_window_8h_source.xhtml#l00128">Window::x()</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00086">Dimensions< T >::y()</a>, and <a class="el" href="_window_8h_source.xhtml#l00137">Window::y()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> {</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == input);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == output);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  win.validate();</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="keyword">const</span> <span class="keyword">auto</span> input_ptr = <span class="keyword">static_cast<</span><span class="keyword">const </span>IMultiImage *__restrict<span class="keyword">></span>(input);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="keyword">const</span> <span class="keyword">auto</span> output_ptr = <span class="keyword">static_cast<</span><a class="code" href="namespacearm__compute.xhtml#ac20902ac1ef01783c8a8d71a9bdf1100">IImage</a> *__restrict<span class="keyword">></span>(output);</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span> </div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  constexpr <span class="keyword">auto</span> element_size = alpha ? 32 : 24;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="keyword">const</span> <span class="keyword">auto</span> out_stride = output_ptr-><a class="code" href="classarm__compute_1_1_i_tensor.xhtml#a0e95dc1e53c361348314873b168ae237">info</a>()-><a class="code" href="classarm__compute_1_1_i_tensor_info.xhtml#a6b14f175bf5281f57b561e2d4e4b1f1f">strides_in_bytes</a>().<a class="code" href="classarm__compute_1_1_dimensions.xhtml#a691c9cb93365c2e33f3429de43244098">y</a>();</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  constexpr <span class="keyword">auto</span> shift = uv ? 0 : 1;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> </div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="comment">// UV's width and height are subsampled</span></div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  Window win_uv(win);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  win_uv.set(Window::DimX, Window::Dimension(win_uv.x().start() / 2, win_uv.x().end() / 2, win.x().step() / 2));</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  win_uv.set(Window::DimY, Window::Dimension(win_uv.y().start() / 2, win_uv.y().end() / 2, 1));</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  win_uv.validate();</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span> </div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  Iterator in_y(input_ptr->plane(0), win);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  Iterator in_uv(input_ptr->plane(1), win_uv);</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  Iterator out(output_ptr, win);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> </div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <a class="code" href="namespacearm__compute.xhtml#a6c0dcc38187027dcb89cd9724bc5a823">execute_window_loop</a>(win, [&](<span class="keyword">const</span> Coordinates & <span class="keywordtype">id</span>)</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  {</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_y_top = vld2q_u8(in_y.ptr());</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_y_bottom = vld2q_u8(in_y.ptr() + input_ptr->plane(0)->info()->strides_in_bytes().y());</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_uv = vld2q_u8(in_uv.ptr());</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="comment">//ta_y.val[0] = Y0 Y2 Y4 Y6 ...</span></div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="comment">//ta_y.val[1] = Y1 Y3 Y5 Y7 ...</span></div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <span class="comment">//ta_uv.val[0] = U0 U2 U4 U6 ...</span></div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="comment">//ta_uv.val[1] = V0 V2 V4 V6 ...</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> </div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="comment">// Convert the uint8x16x4_t to float32x4x4_t</span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  float32x4x4_t yvec_top, yyvec_top, yvec_bottom, yyvec_bottom, uvec, vvec;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  convert_uint8x16_to_float32x4x4(ta_y_top.val[0], yvec_top);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  convert_uint8x16_to_float32x4x4(ta_y_top.val[1], yyvec_top);</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  convert_uint8x16_to_float32x4x4(ta_y_bottom.val[0], yvec_bottom);</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  convert_uint8x16_to_float32x4x4(ta_y_bottom.val[1], yyvec_bottom);</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  convert_uint8x16_to_float32x4x4(ta_uv.val[0 + shift], uvec);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  convert_uint8x16_to_float32x4x4(ta_uv.val[1 - shift], vvec);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span> </div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  yuyv_to_rgb_calculation(yvec_top.val[0], uvec.val[0], yyvec_top.val[0], vvec.val[0], out.ptr() + 0 * element_size, alpha);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  yuyv_to_rgb_calculation(yvec_top.val[1], uvec.val[1], yyvec_top.val[1], vvec.val[1], out.ptr() + 1 * element_size, alpha);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  yuyv_to_rgb_calculation(yvec_top.val[2], uvec.val[2], yyvec_top.val[2], vvec.val[2], out.ptr() + 2 * element_size, alpha);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  yuyv_to_rgb_calculation(yvec_top.val[3], uvec.val[3], yyvec_top.val[3], vvec.val[3], out.ptr() + 3 * element_size, alpha);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> </div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  yuyv_to_rgb_calculation(yvec_bottom.val[0], uvec.val[0], yyvec_bottom.val[0], vvec.val[0], out.ptr() + out_stride + 0 * element_size, alpha);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  yuyv_to_rgb_calculation(yvec_bottom.val[1], uvec.val[1], yyvec_bottom.val[1], vvec.val[1], out.ptr() + out_stride + 1 * element_size, alpha);</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  yuyv_to_rgb_calculation(yvec_bottom.val[2], uvec.val[2], yyvec_bottom.val[2], vvec.val[2], out.ptr() + out_stride + 2 * element_size, alpha);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  yuyv_to_rgb_calculation(yvec_bottom.val[3], uvec.val[3], yyvec_bottom.val[3], vvec.val[3], out.ptr() + out_stride + 3 * element_size, alpha);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  },</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  in_y, in_uv, out);</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span> }</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00124">Error.h:124</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a6c0dcc38187027dcb89cd9724bc5a823"><div class="ttname"><a href="namespacearm__compute.xhtml#a6c0dcc38187027dcb89cd9724bc5a823">arm_compute::execute_window_loop</a></div><div class="ttdeci">void execute_window_loop(const Window &w, L &&lambda_function, Ts &&...iterators)</div><div class="ttdoc">Iterate through the passed window, automatically adjusting the iterators and calling the lambda_funct...</div><div class="ttdef"><b>Definition:</b> <a href="_helpers_8inl_source.xhtml#l00176">Helpers.inl:176</a></div></div>
+<div class="ttc" id="classarm__compute_1_1_i_tensor_xhtml_a0e95dc1e53c361348314873b168ae237"><div class="ttname"><a href="classarm__compute_1_1_i_tensor.xhtml#a0e95dc1e53c361348314873b168ae237">arm_compute::ITensor::info</a></div><div class="ttdeci">virtual ITensorInfo * info() const =0</div><div class="ttdoc">Interface to be implemented by the child class to return the tensor&#39;s metadata. </div></div>
<div class="ttc" id="namespacearm__compute_xhtml_ac20902ac1ef01783c8a8d71a9bdf1100"><div class="ttname"><a href="namespacearm__compute.xhtml#ac20902ac1ef01783c8a8d71a9bdf1100">arm_compute::IImage</a></div><div class="ttdeci">ITensor IImage</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_corner_candidates_kernel_8h_source.xhtml#l00036">CPPCornerCandidatesKernel.h:36</a></div></div>
-<div class="ttc" id="classarm__compute_1_1_dimensions_xhtml_a691c9cb93365c2e33f3429de43244098"><div class="ttname"><a href="classarm__compute_1_1_dimensions.xhtml#a691c9cb93365c2e33f3429de43244098">arm_compute::Dimensions::y</a></div><div class="ttdeci">T y() const </div><div class="ttdoc">Alias to access the size of the second dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_dimensions_8h_source.xhtml#l00085">Dimensions.h:85</a></div></div>
-<div class="ttc" id="classarm__compute_1_1_tensor_info_xhtml_a6b157a0e1ca25ef4d682d3bedfeae5f6"><div class="ttname"><a href="classarm__compute_1_1_tensor_info.xhtml#a6b157a0e1ca25ef4d682d3bedfeae5f6">arm_compute::TensorInfo::strides_in_bytes</a></div><div class="ttdeci">const Strides & strides_in_bytes() const </div><div class="ttdoc">The strides in bytes for accessing each dimension of the tensor. </div><div class="ttdef"><b>Definition:</b> <a href="_tensor_info_8h_source.xhtml#l00198">TensorInfo.h:198</a></div></div>
+<div class="ttc" id="classarm__compute_1_1_dimensions_xhtml_a691c9cb93365c2e33f3429de43244098"><div class="ttname"><a href="classarm__compute_1_1_dimensions.xhtml#a691c9cb93365c2e33f3429de43244098">arm_compute::Dimensions::y</a></div><div class="ttdeci">T y() const </div><div class="ttdoc">Alias to access the size of the second dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_dimensions_8h_source.xhtml#l00086">Dimensions.h:86</a></div></div>
+<div class="ttc" id="classarm__compute_1_1_i_tensor_info_xhtml_a6b14f175bf5281f57b561e2d4e4b1f1f"><div class="ttname"><a href="classarm__compute_1_1_i_tensor_info.xhtml#a6b14f175bf5281f57b561e2d4e4b1f1f">arm_compute::ITensorInfo::strides_in_bytes</a></div><div class="ttdeci">virtual const Strides & strides_in_bytes() const =0</div><div class="ttdoc">The strides in bytes for accessing each dimension of the tensor. </div></div>
</div><!-- fragment -->
</div>
</div>
@@ -4470,9 +5710,9 @@
<p>Definition at line <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00686">686</a> of file <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml">NEColorConvertHelper.inl</a>.</p>
-<p>References <a class="el" href="_error_8h_source.xhtml#l00100">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_window_8h_source.xhtml#l00043">Window::DimX</a>, <a class="el" href="_window_8h_source.xhtml#l00045">Window::DimY</a>, <a class="el" href="_window_8h_source.xhtml#l00090">Window::Dimension::end()</a>, <a class="el" href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">execute_window_loop()</a>, <a class="el" href="_window_8inl_source.xhtml#l00040">Window::set()</a>, <a class="el" href="_window_8h_source.xhtml#l00085">Window::Dimension::start()</a>, <a class="el" href="_window_8h_source.xhtml#l00095">Window::Dimension::step()</a>, <a class="el" href="_window_8inl_source.xhtml#l00068">Window::validate()</a>, <a class="el" href="_window_8h_source.xhtml#l00128">Window::x()</a>, and <a class="el" href="_window_8h_source.xhtml#l00137">Window::y()</a>.</p>
-<div class="fragment"><div class="line"><a name="l00687"></a><span class="lineno"> 687</span> {</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == input);</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == output);</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  win.validate();</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span> </div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  <span class="keyword">const</span> <span class="keyword">auto</span> input_ptr = <span class="keyword">static_cast<</span><span class="keyword">const </span>IMultiImage *__restrict<span class="keyword">></span>(input);</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  <span class="keyword">const</span> <span class="keyword">auto</span> output_ptr = <span class="keyword">static_cast<</span>IMultiImage *__restrict<span class="keyword">></span>(output);</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span> </div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  constexpr <span class="keyword">auto</span> shift = uv ? 0 : 1;</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span> </div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  <span class="comment">// UV's width and height are subsampled</span></div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  Window win_uv(win);</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  win_uv.set(Window::DimX, Window::Dimension(win_uv.x().start() / 2, win_uv.x().end() / 2, win_uv.x().step() / 2));</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  win_uv.set(Window::DimY, Window::Dimension(win_uv.y().start() / 2, win_uv.y().end() / 2, 1));</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  win_uv.validate();</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span> </div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  Iterator in_y(input_ptr->plane(0), win);</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  Iterator in_uv(input_ptr->plane(1), win_uv);</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  Iterator out_y(output_ptr->plane(0), win);</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  Iterator out_u(output_ptr->plane(1), win);</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  Iterator out_v(output_ptr->plane(2), win);</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span> </div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  <a class="code" href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">execute_window_loop</a>(win, [&](<span class="keyword">const</span> Coordinates & <span class="keywordtype">id</span>)</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  {</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_y_top = vld2q_u8(in_y.ptr());</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_y_bottom = vld2q_u8(in_y.ptr() + input_ptr->plane(0)->info()->strides_in_bytes().y());</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_uv = vld2q_u8(in_uv.ptr());</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  <span class="comment">//ta_y.val[0] = Y0 Y2 Y4 Y6 ...</span></div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  <span class="comment">//ta_y.val[1] = Y1 Y3 Y5 Y7 ...</span></div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  <span class="comment">//ta_uv.val[0] = U0 U2 U4 U6 ...</span></div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  <span class="comment">//ta_uv.val[1] = V0 V2 V4 V6 ...</span></div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span> </div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  vst2q_u8(out_y.ptr(), ta_y_top);</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  vst2q_u8(out_y.ptr() + output_ptr->plane(0)->info()->strides_in_bytes().y(), ta_y_bottom);</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span> </div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  uint8x16x2_t uvec;</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  uvec.val[0] = ta_uv.val[0 + shift];</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  uvec.val[1] = ta_uv.val[0 + shift];</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  vst2q_u8(out_u.ptr(), uvec);</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  vst2q_u8(out_u.ptr() + output_ptr->plane(1)->info()->strides_in_bytes().y(), uvec);</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span> </div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  uint8x16x2_t vvec;</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  vvec.val[0] = ta_uv.val[1 - shift];</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  vvec.val[1] = ta_uv.val[1 - shift];</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  vst2q_u8(out_v.ptr(), vvec);</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  vst2q_u8(out_v.ptr() + output_ptr->plane(2)->info()->strides_in_bytes().y(), vvec);</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  },</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  in_y, in_uv, out_y, out_u, out_v);</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span> }</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00100">Error.h:100</a></div></div>
-<div class="ttc" id="namespacearm__compute_xhtml_a78fd1c0056e9add7ab01b8e118c0038d"><div class="ttname"><a href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">arm_compute::execute_window_loop</a></div><div class="ttdeci">void execute_window_loop(const Window &w, L &&lambda_function, Ts &&...iterators)</div><div class="ttdoc">Iterate through the passed window, automatically adjusting the iterators and calling the lambda_funct...</div></div>
+<p>References <a class="el" href="_error_8h_source.xhtml#l00124">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_window_8h_source.xhtml#l00043">Window::DimX</a>, <a class="el" href="_window_8h_source.xhtml#l00045">Window::DimY</a>, <a class="el" href="_window_8h_source.xhtml#l00090">Window::Dimension::end()</a>, <a class="el" href="_helpers_8inl_source.xhtml#l00176">execute_window_loop()</a>, <a class="el" href="_window_8inl_source.xhtml#l00040">Window::set()</a>, <a class="el" href="_window_8h_source.xhtml#l00085">Window::Dimension::start()</a>, <a class="el" href="_window_8h_source.xhtml#l00095">Window::Dimension::step()</a>, <a class="el" href="_window_8inl_source.xhtml#l00083">Window::validate()</a>, <a class="el" href="_window_8h_source.xhtml#l00128">Window::x()</a>, and <a class="el" href="_window_8h_source.xhtml#l00137">Window::y()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00687"></a><span class="lineno"> 687</span> {</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == input);</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == output);</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  win.validate();</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span> </div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  <span class="keyword">const</span> <span class="keyword">auto</span> input_ptr = <span class="keyword">static_cast<</span><span class="keyword">const </span>IMultiImage *__restrict<span class="keyword">></span>(input);</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  <span class="keyword">const</span> <span class="keyword">auto</span> output_ptr = <span class="keyword">static_cast<</span>IMultiImage *__restrict<span class="keyword">></span>(output);</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span> </div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  constexpr <span class="keyword">auto</span> shift = uv ? 0 : 1;</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span> </div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  <span class="comment">// UV's width and height are subsampled</span></div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  Window win_uv(win);</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  win_uv.set(Window::DimX, Window::Dimension(win_uv.x().start() / 2, win_uv.x().end() / 2, win_uv.x().step() / 2));</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  win_uv.set(Window::DimY, Window::Dimension(win_uv.y().start() / 2, win_uv.y().end() / 2, 1));</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  win_uv.validate();</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span> </div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  Iterator in_y(input_ptr->plane(0), win);</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  Iterator in_uv(input_ptr->plane(1), win_uv);</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  Iterator out_y(output_ptr->plane(0), win);</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  Iterator out_u(output_ptr->plane(1), win);</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  Iterator out_v(output_ptr->plane(2), win);</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span> </div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  <a class="code" href="namespacearm__compute.xhtml#a6c0dcc38187027dcb89cd9724bc5a823">execute_window_loop</a>(win, [&](<span class="keyword">const</span> Coordinates & <span class="keywordtype">id</span>)</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  {</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_y_top = vld2q_u8(in_y.ptr());</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_y_bottom = vld2q_u8(in_y.ptr() + input_ptr->plane(0)->info()->strides_in_bytes().y());</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_uv = vld2q_u8(in_uv.ptr());</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  <span class="comment">//ta_y.val[0] = Y0 Y2 Y4 Y6 ...</span></div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  <span class="comment">//ta_y.val[1] = Y1 Y3 Y5 Y7 ...</span></div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  <span class="comment">//ta_uv.val[0] = U0 U2 U4 U6 ...</span></div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  <span class="comment">//ta_uv.val[1] = V0 V2 V4 V6 ...</span></div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span> </div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  vst2q_u8(out_y.ptr(), ta_y_top);</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  vst2q_u8(out_y.ptr() + output_ptr->plane(0)->info()->strides_in_bytes().y(), ta_y_bottom);</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span> </div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  uint8x16x2_t uvec;</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  uvec.val[0] = ta_uv.val[0 + shift];</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  uvec.val[1] = ta_uv.val[0 + shift];</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  vst2q_u8(out_u.ptr(), uvec);</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  vst2q_u8(out_u.ptr() + output_ptr->plane(1)->info()->strides_in_bytes().y(), uvec);</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span> </div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  uint8x16x2_t vvec;</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  vvec.val[0] = ta_uv.val[1 - shift];</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  vvec.val[1] = ta_uv.val[1 - shift];</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  vst2q_u8(out_v.ptr(), vvec);</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  vst2q_u8(out_v.ptr() + output_ptr->plane(2)->info()->strides_in_bytes().y(), vvec);</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  },</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  in_y, in_uv, out_y, out_u, out_v);</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span> }</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00124">Error.h:124</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a6c0dcc38187027dcb89cd9724bc5a823"><div class="ttname"><a href="namespacearm__compute.xhtml#a6c0dcc38187027dcb89cd9724bc5a823">arm_compute::execute_window_loop</a></div><div class="ttdeci">void execute_window_loop(const Window &w, L &&lambda_function, Ts &&...iterators)</div><div class="ttdoc">Iterate through the passed window, automatically adjusting the iterators and calling the lambda_funct...</div><div class="ttdef"><b>Definition:</b> <a href="_helpers_8inl_source.xhtml#l00176">Helpers.inl:176</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -4508,9 +5748,9 @@
<p>Definition at line <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00825">825</a> of file <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml">NEColorConvertHelper.inl</a>.</p>
-<p>References <a class="el" href="_error_8h_source.xhtml#l00100">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_window_8h_source.xhtml#l00043">Window::DimX</a>, <a class="el" href="_window_8h_source.xhtml#l00045">Window::DimY</a>, <a class="el" href="_window_8h_source.xhtml#l00090">Window::Dimension::end()</a>, <a class="el" href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">execute_window_loop()</a>, <a class="el" href="classarm__compute_1_1_iterator.xhtml#a2f0d6383162e1af2df323c456a9335d3">Iterator::ptr()</a>, <a class="el" href="_window_8inl_source.xhtml#l00040">Window::set()</a>, <a class="el" href="_window_8h_source.xhtml#l00085">Window::Dimension::start()</a>, <a class="el" href="_window_8h_source.xhtml#l00095">Window::Dimension::step()</a>, <a class="el" href="_window_8inl_source.xhtml#l00068">Window::validate()</a>, <a class="el" href="_window_8h_source.xhtml#l00128">Window::x()</a>, and <a class="el" href="_window_8h_source.xhtml#l00137">Window::y()</a>.</p>
-<div class="fragment"><div class="line"><a name="l00826"></a><span class="lineno"> 826</span> {</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == input);</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == output);</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  win.validate();</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span> </div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  <span class="keyword">const</span> <span class="keyword">auto</span> input_ptr = <span class="keyword">static_cast<</span><span class="keyword">const </span><a class="code" href="namespacearm__compute.xhtml#ac20902ac1ef01783c8a8d71a9bdf1100">IImage</a> *__restrict<span class="keyword">></span>(input);</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  <span class="keyword">const</span> <span class="keyword">auto</span> output_ptr = <span class="keyword">static_cast<</span>IMultiImage *__restrict<span class="keyword">></span>(output);</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span> </div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  <span class="comment">// UV's width and height are subsampled</span></div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  Window win_uv(win);</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  win_uv.set(Window::DimX, Window::Dimension(win_uv.x().start() / 2, win_uv.x().end() / 2, win_uv.x().step() / 2));</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  win_uv.set(Window::DimY, Window::Dimension(win_uv.y().start() / 2, win_uv.y().end() / 2, 1));</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  win_uv.validate();</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span> </div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  Iterator in(input_ptr, win);</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  Iterator out_y(output_ptr->plane(0), win);</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  Iterator out_u(output_ptr->plane(1), win_uv);</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  Iterator out_v(output_ptr->plane(2), win_uv);</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span> </div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  <a class="code" href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">execute_window_loop</a>(win, [&](<span class="keyword">const</span> Coordinates & <span class="keywordtype">id</span>)</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  {</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_rgb_top = load_rgb(in.ptr(), alpha);</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_rgb_bottom = load_rgb(in.ptr() + input_ptr->info()->strides_in_bytes().y(), alpha);</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  <span class="comment">//ta_rgb.val[0] = R0 R1 R2 R3 ...</span></div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  <span class="comment">//ta_rgb.val[1] = G0 G1 G2 G3 ...</span></div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  <span class="comment">//ta_rgb.val[2] = B0 B1 B2 B3 ...</span></div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span> </div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  store_rgb_to_iyuv(ta_rgb_top.val[0], ta_rgb_top.val[1], ta_rgb_top.val[2],</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  ta_rgb_bottom.val[0], ta_rgb_bottom.val[1], ta_rgb_bottom.val[2],</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  out_y.ptr(), out_y.ptr() + output_ptr->plane(0)->info()->strides_in_bytes().y(),</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  out_u.ptr(), out_v.ptr());</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  },</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  in, out_y, out_u, out_v);</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span> }</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00100">Error.h:100</a></div></div>
-<div class="ttc" id="namespacearm__compute_xhtml_a78fd1c0056e9add7ab01b8e118c0038d"><div class="ttname"><a href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">arm_compute::execute_window_loop</a></div><div class="ttdeci">void execute_window_loop(const Window &w, L &&lambda_function, Ts &&...iterators)</div><div class="ttdoc">Iterate through the passed window, automatically adjusting the iterators and calling the lambda_funct...</div></div>
+<p>References <a class="el" href="_error_8h_source.xhtml#l00124">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_window_8h_source.xhtml#l00043">Window::DimX</a>, <a class="el" href="_window_8h_source.xhtml#l00045">Window::DimY</a>, <a class="el" href="_window_8h_source.xhtml#l00090">Window::Dimension::end()</a>, <a class="el" href="_helpers_8inl_source.xhtml#l00176">execute_window_loop()</a>, <a class="el" href="_helpers_8inl_source.xhtml#l00232">Iterator::ptr()</a>, <a class="el" href="_window_8inl_source.xhtml#l00040">Window::set()</a>, <a class="el" href="_window_8h_source.xhtml#l00085">Window::Dimension::start()</a>, <a class="el" href="_window_8h_source.xhtml#l00095">Window::Dimension::step()</a>, <a class="el" href="_window_8inl_source.xhtml#l00083">Window::validate()</a>, <a class="el" href="_window_8h_source.xhtml#l00128">Window::x()</a>, and <a class="el" href="_window_8h_source.xhtml#l00137">Window::y()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00826"></a><span class="lineno"> 826</span> {</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == input);</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == output);</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  win.validate();</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span> </div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  <span class="keyword">const</span> <span class="keyword">auto</span> input_ptr = <span class="keyword">static_cast<</span><span class="keyword">const </span><a class="code" href="namespacearm__compute.xhtml#ac20902ac1ef01783c8a8d71a9bdf1100">IImage</a> *__restrict<span class="keyword">></span>(input);</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  <span class="keyword">const</span> <span class="keyword">auto</span> output_ptr = <span class="keyword">static_cast<</span>IMultiImage *__restrict<span class="keyword">></span>(output);</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span> </div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  <span class="comment">// UV's width and height are subsampled</span></div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  Window win_uv(win);</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  win_uv.set(Window::DimX, Window::Dimension(win_uv.x().start() / 2, win_uv.x().end() / 2, win_uv.x().step() / 2));</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  win_uv.set(Window::DimY, Window::Dimension(win_uv.y().start() / 2, win_uv.y().end() / 2, 1));</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  win_uv.validate();</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span> </div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  Iterator in(input_ptr, win);</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  Iterator out_y(output_ptr->plane(0), win);</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  Iterator out_u(output_ptr->plane(1), win_uv);</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  Iterator out_v(output_ptr->plane(2), win_uv);</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span> </div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  <a class="code" href="namespacearm__compute.xhtml#a6c0dcc38187027dcb89cd9724bc5a823">execute_window_loop</a>(win, [&](<span class="keyword">const</span> Coordinates & <span class="keywordtype">id</span>)</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  {</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_rgb_top = load_rgb(in.ptr(), alpha);</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_rgb_bottom = load_rgb(in.ptr() + input_ptr->info()->strides_in_bytes().y(), alpha);</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  <span class="comment">//ta_rgb.val[0] = R0 R1 R2 R3 ...</span></div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  <span class="comment">//ta_rgb.val[1] = G0 G1 G2 G3 ...</span></div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  <span class="comment">//ta_rgb.val[2] = B0 B1 B2 B3 ...</span></div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span> </div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  store_rgb_to_iyuv(ta_rgb_top.val[0], ta_rgb_top.val[1], ta_rgb_top.val[2],</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  ta_rgb_bottom.val[0], ta_rgb_bottom.val[1], ta_rgb_bottom.val[2],</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  out_y.ptr(), out_y.ptr() + output_ptr->plane(0)->info()->strides_in_bytes().y(),</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  out_u.ptr(), out_v.ptr());</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  },</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  in, out_y, out_u, out_v);</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span> }</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00124">Error.h:124</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a6c0dcc38187027dcb89cd9724bc5a823"><div class="ttname"><a href="namespacearm__compute.xhtml#a6c0dcc38187027dcb89cd9724bc5a823">arm_compute::execute_window_loop</a></div><div class="ttdeci">void execute_window_loop(const Window &w, L &&lambda_function, Ts &&...iterators)</div><div class="ttdoc">Iterate through the passed window, automatically adjusting the iterators and calling the lambda_funct...</div><div class="ttdef"><b>Definition:</b> <a href="_helpers_8inl_source.xhtml#l00176">Helpers.inl:176</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_ac20902ac1ef01783c8a8d71a9bdf1100"><div class="ttname"><a href="namespacearm__compute.xhtml#ac20902ac1ef01783c8a8d71a9bdf1100">arm_compute::IImage</a></div><div class="ttdeci">ITensor IImage</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_corner_candidates_kernel_8h_source.xhtml#l00036">CPPCornerCandidatesKernel.h:36</a></div></div>
</div><!-- fragment -->
</div>
@@ -4547,9 +5787,9 @@
<p>Definition at line <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00789">789</a> of file <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml">NEColorConvertHelper.inl</a>.</p>
-<p>References <a class="el" href="_error_8h_source.xhtml#l00100">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_window_8h_source.xhtml#l00043">Window::DimX</a>, <a class="el" href="_window_8h_source.xhtml#l00045">Window::DimY</a>, <a class="el" href="_window_8h_source.xhtml#l00090">Window::Dimension::end()</a>, <a class="el" href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">execute_window_loop()</a>, <a class="el" href="classarm__compute_1_1_iterator.xhtml#a2f0d6383162e1af2df323c456a9335d3">Iterator::ptr()</a>, <a class="el" href="_window_8inl_source.xhtml#l00040">Window::set()</a>, <a class="el" href="_window_8h_source.xhtml#l00085">Window::Dimension::start()</a>, <a class="el" href="_window_8h_source.xhtml#l00095">Window::Dimension::step()</a>, <a class="el" href="_window_8inl_source.xhtml#l00068">Window::validate()</a>, <a class="el" href="_window_8h_source.xhtml#l00128">Window::x()</a>, and <a class="el" href="_window_8h_source.xhtml#l00137">Window::y()</a>.</p>
-<div class="fragment"><div class="line"><a name="l00790"></a><span class="lineno"> 790</span> {</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == input);</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == output);</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  win.validate();</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span> </div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  <span class="keyword">const</span> <span class="keyword">auto</span> input_ptr = <span class="keyword">static_cast<</span><span class="keyword">const </span><a class="code" href="namespacearm__compute.xhtml#ac20902ac1ef01783c8a8d71a9bdf1100">IImage</a> *__restrict<span class="keyword">></span>(input);</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  <span class="keyword">const</span> <span class="keyword">auto</span> output_ptr = <span class="keyword">static_cast<</span>IMultiImage *__restrict<span class="keyword">></span>(output);</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span> </div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  <span class="comment">// UV's width and height are subsampled</span></div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  Window win_uv(win);</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  win_uv.set(Window::DimX, Window::Dimension(win_uv.x().start() / 2, win_uv.x().end() / 2, win_uv.x().step() / 2));</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  win_uv.set(Window::DimY, Window::Dimension(win_uv.y().start() / 2, win_uv.y().end() / 2, 1));</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  win_uv.validate();</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span> </div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  Iterator in(input_ptr, win);</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  Iterator out_y(output_ptr->plane(0), win);</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  Iterator out_uv(output_ptr->plane(1), win_uv);</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span> </div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  <a class="code" href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">execute_window_loop</a>(win, [&](<span class="keyword">const</span> Coordinates & <span class="keywordtype">id</span>)</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  {</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_rgb_top = load_rgb(in.ptr(), alpha);</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_rgb_bottom = load_rgb(in.ptr() + input_ptr->info()->strides_in_bytes().y(), alpha);</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  <span class="comment">//ta_rgb.val[0] = R0 R1 R2 R3 ...</span></div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  <span class="comment">//ta_rgb.val[1] = G0 G1 G2 G3 ...</span></div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  <span class="comment">//ta_rgb.val[2] = B0 B1 B2 B3 ...</span></div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span> </div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  store_rgb_to_nv12(ta_rgb_top.val[0], ta_rgb_top.val[1], ta_rgb_top.val[2],</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  ta_rgb_bottom.val[0], ta_rgb_bottom.val[1], ta_rgb_bottom.val[2],</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  out_y.ptr(), out_y.ptr() + output_ptr->plane(0)->info()->strides_in_bytes().y(),</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  out_uv.ptr());</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  },</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  in, out_y, out_uv);</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span> }</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00100">Error.h:100</a></div></div>
-<div class="ttc" id="namespacearm__compute_xhtml_a78fd1c0056e9add7ab01b8e118c0038d"><div class="ttname"><a href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">arm_compute::execute_window_loop</a></div><div class="ttdeci">void execute_window_loop(const Window &w, L &&lambda_function, Ts &&...iterators)</div><div class="ttdoc">Iterate through the passed window, automatically adjusting the iterators and calling the lambda_funct...</div></div>
+<p>References <a class="el" href="_error_8h_source.xhtml#l00124">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_window_8h_source.xhtml#l00043">Window::DimX</a>, <a class="el" href="_window_8h_source.xhtml#l00045">Window::DimY</a>, <a class="el" href="_window_8h_source.xhtml#l00090">Window::Dimension::end()</a>, <a class="el" href="_helpers_8inl_source.xhtml#l00176">execute_window_loop()</a>, <a class="el" href="_helpers_8inl_source.xhtml#l00232">Iterator::ptr()</a>, <a class="el" href="_window_8inl_source.xhtml#l00040">Window::set()</a>, <a class="el" href="_window_8h_source.xhtml#l00085">Window::Dimension::start()</a>, <a class="el" href="_window_8h_source.xhtml#l00095">Window::Dimension::step()</a>, <a class="el" href="_window_8inl_source.xhtml#l00083">Window::validate()</a>, <a class="el" href="_window_8h_source.xhtml#l00128">Window::x()</a>, and <a class="el" href="_window_8h_source.xhtml#l00137">Window::y()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00790"></a><span class="lineno"> 790</span> {</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == input);</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == output);</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  win.validate();</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span> </div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  <span class="keyword">const</span> <span class="keyword">auto</span> input_ptr = <span class="keyword">static_cast<</span><span class="keyword">const </span><a class="code" href="namespacearm__compute.xhtml#ac20902ac1ef01783c8a8d71a9bdf1100">IImage</a> *__restrict<span class="keyword">></span>(input);</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  <span class="keyword">const</span> <span class="keyword">auto</span> output_ptr = <span class="keyword">static_cast<</span>IMultiImage *__restrict<span class="keyword">></span>(output);</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span> </div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  <span class="comment">// UV's width and height are subsampled</span></div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  Window win_uv(win);</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  win_uv.set(Window::DimX, Window::Dimension(win_uv.x().start() / 2, win_uv.x().end() / 2, win_uv.x().step() / 2));</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  win_uv.set(Window::DimY, Window::Dimension(win_uv.y().start() / 2, win_uv.y().end() / 2, 1));</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  win_uv.validate();</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span> </div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  Iterator in(input_ptr, win);</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  Iterator out_y(output_ptr->plane(0), win);</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  Iterator out_uv(output_ptr->plane(1), win_uv);</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span> </div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  <a class="code" href="namespacearm__compute.xhtml#a6c0dcc38187027dcb89cd9724bc5a823">execute_window_loop</a>(win, [&](<span class="keyword">const</span> Coordinates & <span class="keywordtype">id</span>)</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  {</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_rgb_top = load_rgb(in.ptr(), alpha);</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_rgb_bottom = load_rgb(in.ptr() + input_ptr->info()->strides_in_bytes().y(), alpha);</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  <span class="comment">//ta_rgb.val[0] = R0 R1 R2 R3 ...</span></div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  <span class="comment">//ta_rgb.val[1] = G0 G1 G2 G3 ...</span></div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  <span class="comment">//ta_rgb.val[2] = B0 B1 B2 B3 ...</span></div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span> </div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  store_rgb_to_nv12(ta_rgb_top.val[0], ta_rgb_top.val[1], ta_rgb_top.val[2],</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  ta_rgb_bottom.val[0], ta_rgb_bottom.val[1], ta_rgb_bottom.val[2],</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  out_y.ptr(), out_y.ptr() + output_ptr->plane(0)->info()->strides_in_bytes().y(),</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  out_uv.ptr());</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  },</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  in, out_y, out_uv);</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span> }</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00124">Error.h:124</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a6c0dcc38187027dcb89cd9724bc5a823"><div class="ttname"><a href="namespacearm__compute.xhtml#a6c0dcc38187027dcb89cd9724bc5a823">arm_compute::execute_window_loop</a></div><div class="ttdeci">void execute_window_loop(const Window &w, L &&lambda_function, Ts &&...iterators)</div><div class="ttdoc">Iterate through the passed window, automatically adjusting the iterators and calling the lambda_funct...</div><div class="ttdef"><b>Definition:</b> <a href="_helpers_8inl_source.xhtml#l00176">Helpers.inl:176</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_ac20902ac1ef01783c8a8d71a9bdf1100"><div class="ttname"><a href="namespacearm__compute.xhtml#ac20902ac1ef01783c8a8d71a9bdf1100">arm_compute::IImage</a></div><div class="ttdeci">ITensor IImage</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_corner_candidates_kernel_8h_source.xhtml#l00036">CPPCornerCandidatesKernel.h:36</a></div></div>
</div><!-- fragment -->
</div>
@@ -4586,9 +5826,9 @@
<p>Definition at line <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00303">303</a> of file <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml">NEColorConvertHelper.inl</a>.</p>
-<p>References <a class="el" href="_error_8h_source.xhtml#l00100">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">execute_window_loop()</a>, and <a class="el" href="classarm__compute_1_1_iterator.xhtml#a2f0d6383162e1af2df323c456a9335d3">Iterator::ptr()</a>.</p>
-<div class="fragment"><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> {</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == input);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == output);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> </div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keyword">const</span> <span class="keyword">auto</span> input_ptr = <span class="keyword">static_cast<</span><span class="keyword">const </span><a class="code" href="namespacearm__compute.xhtml#ac20902ac1ef01783c8a8d71a9bdf1100">IImage</a> *__restrict<span class="keyword">></span>(input);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keyword">const</span> <span class="keyword">auto</span> output_ptr = <span class="keyword">static_cast<</span><a class="code" href="namespacearm__compute.xhtml#ac20902ac1ef01783c8a8d71a9bdf1100">IImage</a> *__restrict<span class="keyword">></span>(output);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  Iterator in(input_ptr, win);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  Iterator out(output_ptr, win);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> </div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <a class="code" href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">execute_window_loop</a>(win, [&](<span class="keyword">const</span> Coordinates & <span class="keywordtype">id</span>)</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  {</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta1 = vld3q_u8(in.ptr());</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  uint8x16x4_t ta2;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  ta2.val[0] = ta1.val[0];</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  ta2.val[1] = ta1.val[1];</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  ta2.val[2] = ta1.val[2];</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  ta2.val[3] = vdupq_n_u8(255);</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  vst4q_u8(out.ptr(), ta2);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  },</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  in, out);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> }</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00100">Error.h:100</a></div></div>
-<div class="ttc" id="namespacearm__compute_xhtml_a78fd1c0056e9add7ab01b8e118c0038d"><div class="ttname"><a href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">arm_compute::execute_window_loop</a></div><div class="ttdeci">void execute_window_loop(const Window &w, L &&lambda_function, Ts &&...iterators)</div><div class="ttdoc">Iterate through the passed window, automatically adjusting the iterators and calling the lambda_funct...</div></div>
+<p>References <a class="el" href="_error_8h_source.xhtml#l00124">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_helpers_8inl_source.xhtml#l00176">execute_window_loop()</a>, and <a class="el" href="_helpers_8inl_source.xhtml#l00232">Iterator::ptr()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> {</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == input);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == output);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> </div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keyword">const</span> <span class="keyword">auto</span> input_ptr = <span class="keyword">static_cast<</span><span class="keyword">const </span><a class="code" href="namespacearm__compute.xhtml#ac20902ac1ef01783c8a8d71a9bdf1100">IImage</a> *__restrict<span class="keyword">></span>(input);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keyword">const</span> <span class="keyword">auto</span> output_ptr = <span class="keyword">static_cast<</span><a class="code" href="namespacearm__compute.xhtml#ac20902ac1ef01783c8a8d71a9bdf1100">IImage</a> *__restrict<span class="keyword">></span>(output);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  Iterator in(input_ptr, win);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  Iterator out(output_ptr, win);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> </div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <a class="code" href="namespacearm__compute.xhtml#a6c0dcc38187027dcb89cd9724bc5a823">execute_window_loop</a>(win, [&](<span class="keyword">const</span> Coordinates & <span class="keywordtype">id</span>)</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  {</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta1 = vld3q_u8(in.ptr());</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  uint8x16x4_t ta2;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  ta2.val[0] = ta1.val[0];</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  ta2.val[1] = ta1.val[1];</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  ta2.val[2] = ta1.val[2];</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  ta2.val[3] = vdupq_n_u8(255);</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  vst4q_u8(out.ptr(), ta2);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  },</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  in, out);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> }</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00124">Error.h:124</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a6c0dcc38187027dcb89cd9724bc5a823"><div class="ttname"><a href="namespacearm__compute.xhtml#a6c0dcc38187027dcb89cd9724bc5a823">arm_compute::execute_window_loop</a></div><div class="ttdeci">void execute_window_loop(const Window &w, L &&lambda_function, Ts &&...iterators)</div><div class="ttdoc">Iterate through the passed window, automatically adjusting the iterators and calling the lambda_funct...</div><div class="ttdef"><b>Definition:</b> <a href="_helpers_8inl_source.xhtml#l00176">Helpers.inl:176</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_ac20902ac1ef01783c8a8d71a9bdf1100"><div class="ttname"><a href="namespacearm__compute.xhtml#ac20902ac1ef01783c8a8d71a9bdf1100">arm_compute::IImage</a></div><div class="ttdeci">ITensor IImage</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_corner_candidates_kernel_8h_source.xhtml#l00036">CPPCornerCandidatesKernel.h:36</a></div></div>
</div><!-- fragment -->
</div>
@@ -4625,9 +5865,9 @@
<p>Definition at line <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00862">862</a> of file <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml">NEColorConvertHelper.inl</a>.</p>
-<p>References <a class="el" href="_error_8h_source.xhtml#l00100">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">execute_window_loop()</a>, <a class="el" href="classarm__compute_1_1_iterator.xhtml#a2f0d6383162e1af2df323c456a9335d3">Iterator::ptr()</a>, and <a class="el" href="_window_8inl_source.xhtml#l00068">Window::validate()</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>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == input);</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == output);</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  win.validate();</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span> </div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  <span class="keyword">const</span> <span class="keyword">auto</span> input_ptr = <span class="keyword">static_cast<</span><span class="keyword">const </span><a class="code" href="namespacearm__compute.xhtml#ac20902ac1ef01783c8a8d71a9bdf1100">IImage</a> *__restrict<span class="keyword">></span>(input);</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  <span class="keyword">const</span> <span class="keyword">auto</span> output_ptr = <span class="keyword">static_cast<</span>IMultiImage *__restrict<span class="keyword">></span>(output);</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span> </div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  Iterator in(input_ptr, win);</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  Iterator out_y(output_ptr->plane(0), win);</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  Iterator out_u(output_ptr->plane(1), win);</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  Iterator out_v(output_ptr->plane(2), win);</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span> </div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  <a class="code" href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">execute_window_loop</a>(win, [&](<span class="keyword">const</span> Coordinates & <span class="keywordtype">id</span>)</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  {</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_rgb = load_rgb(in.ptr(), alpha);</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  <span class="comment">//ta_rgb.val[0] = R0 R1 R2 R3 ...</span></div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  <span class="comment">//ta_rgb.val[1] = G0 G1 G2 G3 ...</span></div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  <span class="comment">//ta_rgb.val[2] = B0 B1 B2 B3 ...</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>  store_rgb_to_yuv4(ta_rgb.val[0], ta_rgb.val[1], ta_rgb.val[2],</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  out_y.ptr(), out_u.ptr(), out_v.ptr());</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  },</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  in, out_y, out_u, out_v);</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span> }</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00100">Error.h:100</a></div></div>
-<div class="ttc" id="namespacearm__compute_xhtml_a78fd1c0056e9add7ab01b8e118c0038d"><div class="ttname"><a href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">arm_compute::execute_window_loop</a></div><div class="ttdeci">void execute_window_loop(const Window &w, L &&lambda_function, Ts &&...iterators)</div><div class="ttdoc">Iterate through the passed window, automatically adjusting the iterators and calling the lambda_funct...</div></div>
+<p>References <a class="el" href="_error_8h_source.xhtml#l00124">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_helpers_8inl_source.xhtml#l00176">execute_window_loop()</a>, <a class="el" href="_helpers_8inl_source.xhtml#l00232">Iterator::ptr()</a>, and <a class="el" href="_window_8inl_source.xhtml#l00083">Window::validate()</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>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == input);</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == output);</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  win.validate();</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span> </div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  <span class="keyword">const</span> <span class="keyword">auto</span> input_ptr = <span class="keyword">static_cast<</span><span class="keyword">const </span><a class="code" href="namespacearm__compute.xhtml#ac20902ac1ef01783c8a8d71a9bdf1100">IImage</a> *__restrict<span class="keyword">></span>(input);</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  <span class="keyword">const</span> <span class="keyword">auto</span> output_ptr = <span class="keyword">static_cast<</span>IMultiImage *__restrict<span class="keyword">></span>(output);</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span> </div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  Iterator in(input_ptr, win);</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  Iterator out_y(output_ptr->plane(0), win);</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  Iterator out_u(output_ptr->plane(1), win);</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  Iterator out_v(output_ptr->plane(2), win);</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span> </div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  <a class="code" href="namespacearm__compute.xhtml#a6c0dcc38187027dcb89cd9724bc5a823">execute_window_loop</a>(win, [&](<span class="keyword">const</span> Coordinates & <span class="keywordtype">id</span>)</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  {</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_rgb = load_rgb(in.ptr(), alpha);</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  <span class="comment">//ta_rgb.val[0] = R0 R1 R2 R3 ...</span></div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  <span class="comment">//ta_rgb.val[1] = G0 G1 G2 G3 ...</span></div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  <span class="comment">//ta_rgb.val[2] = B0 B1 B2 B3 ...</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>  store_rgb_to_yuv4(ta_rgb.val[0], ta_rgb.val[1], ta_rgb.val[2],</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  out_y.ptr(), out_u.ptr(), out_v.ptr());</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  },</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  in, out_y, out_u, out_v);</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span> }</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00124">Error.h:124</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a6c0dcc38187027dcb89cd9724bc5a823"><div class="ttname"><a href="namespacearm__compute.xhtml#a6c0dcc38187027dcb89cd9724bc5a823">arm_compute::execute_window_loop</a></div><div class="ttdeci">void execute_window_loop(const Window &w, L &&lambda_function, Ts &&...iterators)</div><div class="ttdoc">Iterate through the passed window, automatically adjusting the iterators and calling the lambda_funct...</div><div class="ttdef"><b>Definition:</b> <a href="_helpers_8inl_source.xhtml#l00176">Helpers.inl:176</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_ac20902ac1ef01783c8a8d71a9bdf1100"><div class="ttname"><a href="namespacearm__compute.xhtml#ac20902ac1ef01783c8a8d71a9bdf1100">arm_compute::IImage</a></div><div class="ttdeci">ITensor IImage</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_corner_candidates_kernel_8h_source.xhtml#l00036">CPPCornerCandidatesKernel.h:36</a></div></div>
</div><!-- fragment -->
</div>
@@ -4664,9 +5904,9 @@
<p>Definition at line <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00327">327</a> of file <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml">NEColorConvertHelper.inl</a>.</p>
-<p>References <a class="el" href="_error_8h_source.xhtml#l00100">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">execute_window_loop()</a>, and <a class="el" href="classarm__compute_1_1_iterator.xhtml#a2f0d6383162e1af2df323c456a9335d3">Iterator::ptr()</a>.</p>
-<div class="fragment"><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> {</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == input);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == output);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> </div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keyword">const</span> <span class="keyword">auto</span> input_ptr = <span class="keyword">static_cast<</span><span class="keyword">const </span><a class="code" href="namespacearm__compute.xhtml#ac20902ac1ef01783c8a8d71a9bdf1100">IImage</a> *__restrict<span class="keyword">></span>(input);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keyword">const</span> <span class="keyword">auto</span> output_ptr = <span class="keyword">static_cast<</span><a class="code" href="namespacearm__compute.xhtml#ac20902ac1ef01783c8a8d71a9bdf1100">IImage</a> *__restrict<span class="keyword">></span>(output);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> </div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  Iterator in(input_ptr, win);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  Iterator out(output_ptr, win);</div><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>  <a class="code" href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">execute_window_loop</a>(win, [&](<span class="keyword">const</span> Coordinates & <span class="keywordtype">id</span>)</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  {</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta1 = vld4q_u8(in.ptr());</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  uint8x16x3_t ta2;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  ta2.val[0] = ta1.val[0];</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  ta2.val[1] = ta1.val[1];</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  ta2.val[2] = ta1.val[2];</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  vst3q_u8(out.ptr(), ta2);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  },</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  in, out);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> }</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00100">Error.h:100</a></div></div>
-<div class="ttc" id="namespacearm__compute_xhtml_a78fd1c0056e9add7ab01b8e118c0038d"><div class="ttname"><a href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">arm_compute::execute_window_loop</a></div><div class="ttdeci">void execute_window_loop(const Window &w, L &&lambda_function, Ts &&...iterators)</div><div class="ttdoc">Iterate through the passed window, automatically adjusting the iterators and calling the lambda_funct...</div></div>
+<p>References <a class="el" href="_error_8h_source.xhtml#l00124">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_helpers_8inl_source.xhtml#l00176">execute_window_loop()</a>, and <a class="el" href="_helpers_8inl_source.xhtml#l00232">Iterator::ptr()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> {</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == input);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == output);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> </div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keyword">const</span> <span class="keyword">auto</span> input_ptr = <span class="keyword">static_cast<</span><span class="keyword">const </span><a class="code" href="namespacearm__compute.xhtml#ac20902ac1ef01783c8a8d71a9bdf1100">IImage</a> *__restrict<span class="keyword">></span>(input);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keyword">const</span> <span class="keyword">auto</span> output_ptr = <span class="keyword">static_cast<</span><a class="code" href="namespacearm__compute.xhtml#ac20902ac1ef01783c8a8d71a9bdf1100">IImage</a> *__restrict<span class="keyword">></span>(output);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> </div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  Iterator in(input_ptr, win);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  Iterator out(output_ptr, win);</div><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>  <a class="code" href="namespacearm__compute.xhtml#a6c0dcc38187027dcb89cd9724bc5a823">execute_window_loop</a>(win, [&](<span class="keyword">const</span> Coordinates & <span class="keywordtype">id</span>)</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  {</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta1 = vld4q_u8(in.ptr());</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  uint8x16x3_t ta2;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  ta2.val[0] = ta1.val[0];</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  ta2.val[1] = ta1.val[1];</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  ta2.val[2] = ta1.val[2];</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  vst3q_u8(out.ptr(), ta2);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  },</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  in, out);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> }</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00124">Error.h:124</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a6c0dcc38187027dcb89cd9724bc5a823"><div class="ttname"><a href="namespacearm__compute.xhtml#a6c0dcc38187027dcb89cd9724bc5a823">arm_compute::execute_window_loop</a></div><div class="ttdeci">void execute_window_loop(const Window &w, L &&lambda_function, Ts &&...iterators)</div><div class="ttdoc">Iterate through the passed window, automatically adjusting the iterators and calling the lambda_funct...</div><div class="ttdef"><b>Definition:</b> <a href="_helpers_8inl_source.xhtml#l00176">Helpers.inl:176</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_ac20902ac1ef01783c8a8d71a9bdf1100"><div class="ttname"><a href="namespacearm__compute.xhtml#ac20902ac1ef01783c8a8d71a9bdf1100">arm_compute::IImage</a></div><div class="ttdeci">ITensor IImage</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_corner_candidates_kernel_8h_source.xhtml#l00036">CPPCornerCandidatesKernel.h:36</a></div></div>
</div><!-- fragment -->
</div>
@@ -4703,9 +5943,9 @@
<p>Definition at line <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00633">633</a> of file <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml">NEColorConvertHelper.inl</a>.</p>
-<p>References <a class="el" href="_error_8h_source.xhtml#l00100">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_window_8h_source.xhtml#l00043">Window::DimX</a>, <a class="el" href="_window_8h_source.xhtml#l00045">Window::DimY</a>, <a class="el" href="_window_8h_source.xhtml#l00090">Window::Dimension::end()</a>, <a class="el" href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">execute_window_loop()</a>, <a class="el" href="classarm__compute_1_1_iterator.xhtml#a2f0d6383162e1af2df323c456a9335d3">Iterator::ptr()</a>, <a class="el" href="_window_8inl_source.xhtml#l00040">Window::set()</a>, <a class="el" href="_window_8h_source.xhtml#l00085">Window::Dimension::start()</a>, <a class="el" href="_window_8h_source.xhtml#l00095">Window::Dimension::step()</a>, <a class="el" href="_window_8inl_source.xhtml#l00068">Window::validate()</a>, <a class="el" href="_window_8h_source.xhtml#l00128">Window::x()</a>, and <a class="el" href="_window_8h_source.xhtml#l00137">Window::y()</a>.</p>
-<div class="fragment"><div class="line"><a name="l00634"></a><span class="lineno"> 634</span> {</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == input);</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == output);</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  win.validate();</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span> </div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  <span class="keyword">const</span> <span class="keyword">auto</span> input_ptr = <span class="keyword">static_cast<</span><span class="keyword">const </span><a class="code" href="namespacearm__compute.xhtml#ac20902ac1ef01783c8a8d71a9bdf1100">IImage</a> *__restrict<span class="keyword">></span>(input);</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  <span class="keyword">const</span> <span class="keyword">auto</span> output_ptr = <span class="keyword">static_cast<</span>IMultiImage *__restrict<span class="keyword">></span>(output);</div><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>  constexpr <span class="keyword">auto</span> shift = yuyv ? 0 : 1;</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span> </div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  <span class="comment">// Destination's UV's width and height are subsampled</span></div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  Window win_uv(win);</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  win_uv.set(Window::DimX, Window::Dimension(win_uv.x().start() / 2, win_uv.x().end() / 2, win_uv.x().step() / 2));</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  win_uv.set(Window::DimY, Window::Dimension(win_uv.y().start() / 2, win_uv.y().end() / 2, 1));</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  win_uv.validate();</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>  Iterator in(input_ptr, win);</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  Iterator out_y(output_ptr->plane(0), win);</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  Iterator out_u(output_ptr->plane(1), win_uv);</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  Iterator out_v(output_ptr->plane(2), win_uv);</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>  <a class="code" href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">execute_window_loop</a>(win, [&](<span class="keyword">const</span> Coordinates & <span class="keywordtype">id</span>)</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  {</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_top = vld4q_u8(in.ptr());</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_bottom = vld4q_u8(in.ptr() + input_ptr->info()->strides_in_bytes().y());</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  <span class="comment">//ta.val[0] = Y0 Y2 Y4 Y6 ...</span></div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="comment">//ta.val[1] = U0 U2 U4 U6 ...</span></div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  <span class="comment">//ta.val[2] = Y1 Y3 Y5 Y7 ...</span></div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  <span class="comment">//ta.val[3] = V0 V2 V4 V7 ...</span></div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span> </div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  uint8x16x2_t yvec;</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  yvec.val[0] = ta_top.val[0 + shift];</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  yvec.val[1] = ta_top.val[2 + shift];</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  vst2q_u8(out_y.ptr(), yvec);</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span> </div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  uint8x16x2_t yyvec;</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  yyvec.val[0] = ta_bottom.val[0 + shift];</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  yyvec.val[1] = ta_bottom.val[2 + shift];</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  vst2q_u8(out_y.ptr() + output_ptr->plane(0)->info()->strides_in_bytes().y(), yyvec);</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span> </div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  uint8x16_t uvec;</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  uvec = vhaddq_u8(ta_top.val[1 - shift], ta_bottom.val[1 - shift]);</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  vst1q_u8(out_u.ptr(), uvec);</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span> </div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  uint8x16_t vvec;</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  vvec = vhaddq_u8(ta_top.val[3 - shift], ta_bottom.val[3 - shift]);</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  vst1q_u8(out_v.ptr(), vvec);</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  },</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  in, out_y, out_u, out_v);</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span> }</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00100">Error.h:100</a></div></div>
-<div class="ttc" id="namespacearm__compute_xhtml_a78fd1c0056e9add7ab01b8e118c0038d"><div class="ttname"><a href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">arm_compute::execute_window_loop</a></div><div class="ttdeci">void execute_window_loop(const Window &w, L &&lambda_function, Ts &&...iterators)</div><div class="ttdoc">Iterate through the passed window, automatically adjusting the iterators and calling the lambda_funct...</div></div>
+<p>References <a class="el" href="_error_8h_source.xhtml#l00124">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_window_8h_source.xhtml#l00043">Window::DimX</a>, <a class="el" href="_window_8h_source.xhtml#l00045">Window::DimY</a>, <a class="el" href="_window_8h_source.xhtml#l00090">Window::Dimension::end()</a>, <a class="el" href="_helpers_8inl_source.xhtml#l00176">execute_window_loop()</a>, <a class="el" href="_helpers_8inl_source.xhtml#l00232">Iterator::ptr()</a>, <a class="el" href="_window_8inl_source.xhtml#l00040">Window::set()</a>, <a class="el" href="_window_8h_source.xhtml#l00085">Window::Dimension::start()</a>, <a class="el" href="_window_8h_source.xhtml#l00095">Window::Dimension::step()</a>, <a class="el" href="_window_8inl_source.xhtml#l00083">Window::validate()</a>, <a class="el" href="_window_8h_source.xhtml#l00128">Window::x()</a>, and <a class="el" href="_window_8h_source.xhtml#l00137">Window::y()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00634"></a><span class="lineno"> 634</span> {</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == input);</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == output);</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  win.validate();</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span> </div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  <span class="keyword">const</span> <span class="keyword">auto</span> input_ptr = <span class="keyword">static_cast<</span><span class="keyword">const </span><a class="code" href="namespacearm__compute.xhtml#ac20902ac1ef01783c8a8d71a9bdf1100">IImage</a> *__restrict<span class="keyword">></span>(input);</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  <span class="keyword">const</span> <span class="keyword">auto</span> output_ptr = <span class="keyword">static_cast<</span>IMultiImage *__restrict<span class="keyword">></span>(output);</div><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>  constexpr <span class="keyword">auto</span> shift = yuyv ? 0 : 1;</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span> </div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  <span class="comment">// Destination's UV's width and height are subsampled</span></div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  Window win_uv(win);</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  win_uv.set(Window::DimX, Window::Dimension(win_uv.x().start() / 2, win_uv.x().end() / 2, win_uv.x().step() / 2));</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  win_uv.set(Window::DimY, Window::Dimension(win_uv.y().start() / 2, win_uv.y().end() / 2, 1));</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  win_uv.validate();</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>  Iterator in(input_ptr, win);</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  Iterator out_y(output_ptr->plane(0), win);</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  Iterator out_u(output_ptr->plane(1), win_uv);</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  Iterator out_v(output_ptr->plane(2), win_uv);</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>  <a class="code" href="namespacearm__compute.xhtml#a6c0dcc38187027dcb89cd9724bc5a823">execute_window_loop</a>(win, [&](<span class="keyword">const</span> Coordinates & <span class="keywordtype">id</span>)</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  {</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_top = vld4q_u8(in.ptr());</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_bottom = vld4q_u8(in.ptr() + input_ptr->info()->strides_in_bytes().y());</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  <span class="comment">//ta.val[0] = Y0 Y2 Y4 Y6 ...</span></div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="comment">//ta.val[1] = U0 U2 U4 U6 ...</span></div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  <span class="comment">//ta.val[2] = Y1 Y3 Y5 Y7 ...</span></div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  <span class="comment">//ta.val[3] = V0 V2 V4 V7 ...</span></div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span> </div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  uint8x16x2_t yvec;</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  yvec.val[0] = ta_top.val[0 + shift];</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  yvec.val[1] = ta_top.val[2 + shift];</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  vst2q_u8(out_y.ptr(), yvec);</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span> </div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  uint8x16x2_t yyvec;</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  yyvec.val[0] = ta_bottom.val[0 + shift];</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  yyvec.val[1] = ta_bottom.val[2 + shift];</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  vst2q_u8(out_y.ptr() + output_ptr->plane(0)->info()->strides_in_bytes().y(), yyvec);</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span> </div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  uint8x16_t uvec;</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  uvec = vhaddq_u8(ta_top.val[1 - shift], ta_bottom.val[1 - shift]);</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  vst1q_u8(out_u.ptr(), uvec);</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span> </div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  uint8x16_t vvec;</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  vvec = vhaddq_u8(ta_top.val[3 - shift], ta_bottom.val[3 - shift]);</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  vst1q_u8(out_v.ptr(), vvec);</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  },</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  in, out_y, out_u, out_v);</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span> }</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00124">Error.h:124</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a6c0dcc38187027dcb89cd9724bc5a823"><div class="ttname"><a href="namespacearm__compute.xhtml#a6c0dcc38187027dcb89cd9724bc5a823">arm_compute::execute_window_loop</a></div><div class="ttdeci">void execute_window_loop(const Window &w, L &&lambda_function, Ts &&...iterators)</div><div class="ttdoc">Iterate through the passed window, automatically adjusting the iterators and calling the lambda_funct...</div><div class="ttdef"><b>Definition:</b> <a href="_helpers_8inl_source.xhtml#l00176">Helpers.inl:176</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_ac20902ac1ef01783c8a8d71a9bdf1100"><div class="ttname"><a href="namespacearm__compute.xhtml#ac20902ac1ef01783c8a8d71a9bdf1100">arm_compute::IImage</a></div><div class="ttdeci">ITensor IImage</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_corner_candidates_kernel_8h_source.xhtml#l00036">CPPCornerCandidatesKernel.h:36</a></div></div>
</div><!-- fragment -->
</div>
@@ -4742,9 +5982,9 @@
<p>Definition at line <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00502">502</a> of file <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml">NEColorConvertHelper.inl</a>.</p>
-<p>References <a class="el" href="_error_8h_source.xhtml#l00100">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_window_8h_source.xhtml#l00043">Window::DimX</a>, <a class="el" href="_window_8h_source.xhtml#l00045">Window::DimY</a>, <a class="el" href="_window_8h_source.xhtml#l00090">Window::Dimension::end()</a>, <a class="el" href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">execute_window_loop()</a>, <a class="el" href="classarm__compute_1_1_iterator.xhtml#a2f0d6383162e1af2df323c456a9335d3">Iterator::ptr()</a>, <a class="el" href="_window_8inl_source.xhtml#l00040">Window::set()</a>, <a class="el" href="_window_8h_source.xhtml#l00085">Window::Dimension::start()</a>, <a class="el" href="_window_8h_source.xhtml#l00095">Window::Dimension::step()</a>, <a class="el" href="_window_8inl_source.xhtml#l00068">Window::validate()</a>, <a class="el" href="_window_8h_source.xhtml#l00128">Window::x()</a>, and <a class="el" href="_window_8h_source.xhtml#l00137">Window::y()</a>.</p>
-<div class="fragment"><div class="line"><a name="l00503"></a><span class="lineno"> 503</span> {</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == input);</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == output);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  win.validate();</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> </div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="keyword">const</span> <span class="keyword">auto</span> input_ptr = <span class="keyword">static_cast<</span><span class="keyword">const </span><a class="code" href="namespacearm__compute.xhtml#ac20902ac1ef01783c8a8d71a9bdf1100">IImage</a> *__restrict<span class="keyword">></span>(input);</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <span class="keyword">const</span> <span class="keyword">auto</span> output_ptr = <span class="keyword">static_cast<</span>IMultiImage *__restrict<span class="keyword">></span>(output);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> </div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  constexpr <span class="keyword">auto</span> shift = yuyv ? 0 : 1;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span> </div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="comment">// NV12's UV's width and height are subsampled</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  Window win_uv(win);</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  win_uv.set(Window::DimX, Window::Dimension(win_uv.x().start() / 2, win_uv.x().end() / 2, win_uv.x().step() / 2));</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  win_uv.set(Window::DimY, Window::Dimension(win_uv.y().start() / 2, win_uv.y().end() / 2, 1));</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  win_uv.validate();</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span> </div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  Iterator in(input_ptr, win);</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  Iterator out_y(output_ptr->plane(0), win);</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  Iterator out_uv(output_ptr->plane(1), win_uv);</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> </div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <a class="code" href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">execute_window_loop</a>(win, [&](<span class="keyword">const</span> Coordinates & <span class="keywordtype">id</span>)</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  {</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_top = vld4q_u8(in.ptr());</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_bottom = vld4q_u8(in.ptr() + input_ptr->info()->strides_in_bytes().y());</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <span class="comment">//ta.val[0] = Y0 Y2 Y4 Y6 ...</span></div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <span class="comment">//ta.val[1] = U0 U2 U4 U6 ...</span></div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  <span class="comment">//ta.val[2] = Y1 Y3 Y5 Y7 ...</span></div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <span class="comment">//ta.val[3] = V0 V2 V4 V7 ...</span></div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span> </div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  uint8x16x2_t yvec;</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  yvec.val[0] = ta_top.val[0 + shift];</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  yvec.val[1] = ta_top.val[2 + shift];</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  vst2q_u8(out_y.ptr(), yvec);</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span> </div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  uint8x16x2_t yyvec;</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  yyvec.val[0] = ta_bottom.val[0 + shift];</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  yyvec.val[1] = ta_bottom.val[2 + shift];</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  vst2q_u8(out_y.ptr() + output_ptr->plane(0)->info()->strides_in_bytes().y(), yyvec);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span> </div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  uint8x16x2_t uvvec;</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  uvvec.val[0] = vhaddq_u8(ta_top.val[1 - shift], ta_bottom.val[1 - shift]);</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  uvvec.val[1] = vhaddq_u8(ta_top.val[3 - shift], ta_bottom.val[3 - shift]);</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  vst2q_u8(out_uv.ptr(), uvvec);</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  },</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  in, out_y, out_uv);</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span> }</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00100">Error.h:100</a></div></div>
-<div class="ttc" id="namespacearm__compute_xhtml_a78fd1c0056e9add7ab01b8e118c0038d"><div class="ttname"><a href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">arm_compute::execute_window_loop</a></div><div class="ttdeci">void execute_window_loop(const Window &w, L &&lambda_function, Ts &&...iterators)</div><div class="ttdoc">Iterate through the passed window, automatically adjusting the iterators and calling the lambda_funct...</div></div>
+<p>References <a class="el" href="_error_8h_source.xhtml#l00124">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_window_8h_source.xhtml#l00043">Window::DimX</a>, <a class="el" href="_window_8h_source.xhtml#l00045">Window::DimY</a>, <a class="el" href="_window_8h_source.xhtml#l00090">Window::Dimension::end()</a>, <a class="el" href="_helpers_8inl_source.xhtml#l00176">execute_window_loop()</a>, <a class="el" href="_helpers_8inl_source.xhtml#l00232">Iterator::ptr()</a>, <a class="el" href="_window_8inl_source.xhtml#l00040">Window::set()</a>, <a class="el" href="_window_8h_source.xhtml#l00085">Window::Dimension::start()</a>, <a class="el" href="_window_8h_source.xhtml#l00095">Window::Dimension::step()</a>, <a class="el" href="_window_8inl_source.xhtml#l00083">Window::validate()</a>, <a class="el" href="_window_8h_source.xhtml#l00128">Window::x()</a>, and <a class="el" href="_window_8h_source.xhtml#l00137">Window::y()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00503"></a><span class="lineno"> 503</span> {</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == input);</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == output);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  win.validate();</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> </div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="keyword">const</span> <span class="keyword">auto</span> input_ptr = <span class="keyword">static_cast<</span><span class="keyword">const </span><a class="code" href="namespacearm__compute.xhtml#ac20902ac1ef01783c8a8d71a9bdf1100">IImage</a> *__restrict<span class="keyword">></span>(input);</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <span class="keyword">const</span> <span class="keyword">auto</span> output_ptr = <span class="keyword">static_cast<</span>IMultiImage *__restrict<span class="keyword">></span>(output);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> </div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  constexpr <span class="keyword">auto</span> shift = yuyv ? 0 : 1;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span> </div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="comment">// NV12's UV's width and height are subsampled</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  Window win_uv(win);</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  win_uv.set(Window::DimX, Window::Dimension(win_uv.x().start() / 2, win_uv.x().end() / 2, win_uv.x().step() / 2));</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  win_uv.set(Window::DimY, Window::Dimension(win_uv.y().start() / 2, win_uv.y().end() / 2, 1));</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  win_uv.validate();</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span> </div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  Iterator in(input_ptr, win);</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  Iterator out_y(output_ptr->plane(0), win);</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  Iterator out_uv(output_ptr->plane(1), win_uv);</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> </div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <a class="code" href="namespacearm__compute.xhtml#a6c0dcc38187027dcb89cd9724bc5a823">execute_window_loop</a>(win, [&](<span class="keyword">const</span> Coordinates & <span class="keywordtype">id</span>)</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  {</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_top = vld4q_u8(in.ptr());</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta_bottom = vld4q_u8(in.ptr() + input_ptr->info()->strides_in_bytes().y());</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <span class="comment">//ta.val[0] = Y0 Y2 Y4 Y6 ...</span></div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <span class="comment">//ta.val[1] = U0 U2 U4 U6 ...</span></div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  <span class="comment">//ta.val[2] = Y1 Y3 Y5 Y7 ...</span></div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <span class="comment">//ta.val[3] = V0 V2 V4 V7 ...</span></div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span> </div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  uint8x16x2_t yvec;</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  yvec.val[0] = ta_top.val[0 + shift];</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  yvec.val[1] = ta_top.val[2 + shift];</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  vst2q_u8(out_y.ptr(), yvec);</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span> </div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  uint8x16x2_t yyvec;</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  yyvec.val[0] = ta_bottom.val[0 + shift];</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  yyvec.val[1] = ta_bottom.val[2 + shift];</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  vst2q_u8(out_y.ptr() + output_ptr->plane(0)->info()->strides_in_bytes().y(), yyvec);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span> </div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  uint8x16x2_t uvvec;</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  uvvec.val[0] = vhaddq_u8(ta_top.val[1 - shift], ta_bottom.val[1 - shift]);</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  uvvec.val[1] = vhaddq_u8(ta_top.val[3 - shift], ta_bottom.val[3 - shift]);</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  vst2q_u8(out_uv.ptr(), uvvec);</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  },</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  in, out_y, out_uv);</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span> }</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00124">Error.h:124</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a6c0dcc38187027dcb89cd9724bc5a823"><div class="ttname"><a href="namespacearm__compute.xhtml#a6c0dcc38187027dcb89cd9724bc5a823">arm_compute::execute_window_loop</a></div><div class="ttdeci">void execute_window_loop(const Window &w, L &&lambda_function, Ts &&...iterators)</div><div class="ttdoc">Iterate through the passed window, automatically adjusting the iterators and calling the lambda_funct...</div><div class="ttdef"><b>Definition:</b> <a href="_helpers_8inl_source.xhtml#l00176">Helpers.inl:176</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_ac20902ac1ef01783c8a8d71a9bdf1100"><div class="ttname"><a href="namespacearm__compute.xhtml#ac20902ac1ef01783c8a8d71a9bdf1100">arm_compute::IImage</a></div><div class="ttdeci">ITensor IImage</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_corner_candidates_kernel_8h_source.xhtml#l00036">CPPCornerCandidatesKernel.h:36</a></div></div>
</div><!-- fragment -->
</div>
@@ -4781,14 +6021,14 @@
<p>Definition at line <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00351">351</a> of file <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml">NEColorConvertHelper.inl</a>.</p>
-<p>References <a class="el" href="_error_8h_source.xhtml#l00100">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">execute_window_loop()</a>, and <a class="el" href="classarm__compute_1_1_iterator.xhtml#a2f0d6383162e1af2df323c456a9335d3">Iterator::ptr()</a>.</p>
-<div class="fragment"><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>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == input);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == output);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span> </div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keyword">const</span> <span class="keyword">auto</span> input_ptr = <span class="keyword">static_cast<</span><span class="keyword">const </span><a class="code" href="namespacearm__compute.xhtml#ac20902ac1ef01783c8a8d71a9bdf1100">IImage</a> *__restrict<span class="keyword">></span>(input);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="keyword">const</span> <span class="keyword">auto</span> output_ptr = <span class="keyword">static_cast<</span><a class="code" href="namespacearm__compute.xhtml#ac20902ac1ef01783c8a8d71a9bdf1100">IImage</a> *__restrict<span class="keyword">></span>(output);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> </div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  constexpr <span class="keyword">auto</span> element_size = alpha ? 32 : 24;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  constexpr <span class="keyword">auto</span> shift = yuyv ? 0 : 1;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> </div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  Iterator in(input_ptr, win);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  Iterator out(output_ptr, win);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span> </div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <a class="code" href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">execute_window_loop</a>(win, [&](<span class="keyword">const</span> Coordinates & <span class="keywordtype">id</span>)</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  {</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  float32x4x4_t uvec, yvec, vvec, yyvec;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta = vld4q_u8(in.ptr());</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="comment">//ta.val[0] = Y0 Y2 Y4 Y6 ...</span></div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="comment">//ta.val[1] = U0 U2 U4 U6 ...</span></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="comment">//ta.val[2] = Y1 Y3 Y5 Y7 ...</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="comment">//ta.val[3] = V0 V2 V4 V7 ...</span></div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> </div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="comment">// Convert the uint8x16x4_t to float32x4x4_t</span></div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  convert_uint8x16_to_float32x4x4(ta.val[0 + shift], yvec);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  convert_uint8x16_to_float32x4x4(ta.val[1 - shift], uvec);</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  convert_uint8x16_to_float32x4x4(ta.val[2 + shift], yyvec);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  convert_uint8x16_to_float32x4x4(ta.val[3 - shift], vvec);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span> </div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  yuyv_to_rgb_calculation(yvec.val[0], uvec.val[0], yyvec.val[0], vvec.val[0], out.ptr() + 0 * element_size, alpha);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  yuyv_to_rgb_calculation(yvec.val[1], uvec.val[1], yyvec.val[1], vvec.val[1], out.ptr() + 1 * element_size, alpha);</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  yuyv_to_rgb_calculation(yvec.val[2], uvec.val[2], yyvec.val[2], vvec.val[2], out.ptr() + 2 * element_size, alpha);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  yuyv_to_rgb_calculation(yvec.val[3], uvec.val[3], yyvec.val[3], vvec.val[3], out.ptr() + 3 * element_size, alpha);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  },</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  in, out);</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> }</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00100">Error.h:100</a></div></div>
-<div class="ttc" id="namespacearm__compute_xhtml_a78fd1c0056e9add7ab01b8e118c0038d"><div class="ttname"><a href="namespacearm__compute.xhtml#a78fd1c0056e9add7ab01b8e118c0038d">arm_compute::execute_window_loop</a></div><div class="ttdeci">void execute_window_loop(const Window &w, L &&lambda_function, Ts &&...iterators)</div><div class="ttdoc">Iterate through the passed window, automatically adjusting the iterators and calling the lambda_funct...</div></div>
+<p>References <a class="el" href="_error_8h_source.xhtml#l00124">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_helpers_8inl_source.xhtml#l00176">execute_window_loop()</a>, and <a class="el" href="_helpers_8inl_source.xhtml#l00232">Iterator::ptr()</a>.</p>
+<div class="fragment"><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>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == input);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<span class="keyword">nullptr</span> == output);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span> </div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keyword">const</span> <span class="keyword">auto</span> input_ptr = <span class="keyword">static_cast<</span><span class="keyword">const </span><a class="code" href="namespacearm__compute.xhtml#ac20902ac1ef01783c8a8d71a9bdf1100">IImage</a> *__restrict<span class="keyword">></span>(input);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="keyword">const</span> <span class="keyword">auto</span> output_ptr = <span class="keyword">static_cast<</span><a class="code" href="namespacearm__compute.xhtml#ac20902ac1ef01783c8a8d71a9bdf1100">IImage</a> *__restrict<span class="keyword">></span>(output);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> </div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  constexpr <span class="keyword">auto</span> element_size = alpha ? 32 : 24;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  constexpr <span class="keyword">auto</span> shift = yuyv ? 0 : 1;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> </div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  Iterator in(input_ptr, win);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  Iterator out(output_ptr, win);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span> </div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <a class="code" href="namespacearm__compute.xhtml#a6c0dcc38187027dcb89cd9724bc5a823">execute_window_loop</a>(win, [&](<span class="keyword">const</span> Coordinates & <span class="keywordtype">id</span>)</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  {</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  float32x4x4_t uvec, yvec, vvec, yyvec;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="keyword">const</span> <span class="keyword">auto</span> ta = vld4q_u8(in.ptr());</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="comment">//ta.val[0] = Y0 Y2 Y4 Y6 ...</span></div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="comment">//ta.val[1] = U0 U2 U4 U6 ...</span></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="comment">//ta.val[2] = Y1 Y3 Y5 Y7 ...</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="comment">//ta.val[3] = V0 V2 V4 V7 ...</span></div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> </div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="comment">// Convert the uint8x16x4_t to float32x4x4_t</span></div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  convert_uint8x16_to_float32x4x4(ta.val[0 + shift], yvec);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  convert_uint8x16_to_float32x4x4(ta.val[1 - shift], uvec);</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  convert_uint8x16_to_float32x4x4(ta.val[2 + shift], yyvec);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  convert_uint8x16_to_float32x4x4(ta.val[3 - shift], vvec);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span> </div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  yuyv_to_rgb_calculation(yvec.val[0], uvec.val[0], yyvec.val[0], vvec.val[0], out.ptr() + 0 * element_size, alpha);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  yuyv_to_rgb_calculation(yvec.val[1], uvec.val[1], yyvec.val[1], vvec.val[1], out.ptr() + 1 * element_size, alpha);</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  yuyv_to_rgb_calculation(yvec.val[2], uvec.val[2], yyvec.val[2], vvec.val[2], out.ptr() + 2 * element_size, alpha);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  yuyv_to_rgb_calculation(yvec.val[3], uvec.val[3], yyvec.val[3], vvec.val[3], out.ptr() + 3 * element_size, alpha);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  },</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  in, out);</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> }</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00124">Error.h:124</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a6c0dcc38187027dcb89cd9724bc5a823"><div class="ttname"><a href="namespacearm__compute.xhtml#a6c0dcc38187027dcb89cd9724bc5a823">arm_compute::execute_window_loop</a></div><div class="ttdeci">void execute_window_loop(const Window &w, L &&lambda_function, Ts &&...iterators)</div><div class="ttdoc">Iterate through the passed window, automatically adjusting the iterators and calling the lambda_funct...</div><div class="ttdef"><b>Definition:</b> <a href="_helpers_8inl_source.xhtml#l00176">Helpers.inl:176</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_ac20902ac1ef01783c8a8d71a9bdf1100"><div class="ttname"><a href="namespacearm__compute.xhtml#ac20902ac1ef01783c8a8d71a9bdf1100">arm_compute::IImage</a></div><div class="ttdeci">ITensor IImage</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_corner_candidates_kernel_8h_source.xhtml#l00036">CPPCornerCandidatesKernel.h:36</a></div></div>
</div><!-- fragment -->
</div>
</div>
-<a class="anchor" id="aedfc72aa9d25b8918734bd374421ee32"></a>
+<a class="anchor" id="a35178800b82e07a49da5a81cdeda9a0c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
@@ -4798,7 +6038,7 @@
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1_strides.xhtml">Strides</a> arm_compute::compute_strides </td>
<td>(</td>
- <td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_info.xhtml">TensorInfo</a> & </td>
+ <td class="paramtype">const <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml">ITensorInfo</a> & </td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
@@ -4837,15 +6077,15 @@
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="classarm__compute_1_1_strides.xhtml" title="Strides of an item in bytes. ">Strides</a> object based on the specified strides. Missing strides are calculated based on the tensor shape and the strides of lower dimensions. </dd></dl>
-<p>Definition at line <a class="el" href="_helpers_8h_source.xhtml#l00389">389</a> of file <a class="el" href="_helpers_8h_source.xhtml">Helpers.h</a>.</p>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml#l00427">427</a> of file <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml">Helpers.h</a>.</p>
-<p>References <a class="el" href="_tensor_info_8h_source.xhtml#l00239">TensorInfo::num_dimensions()</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00073">Dimensions< T >::set()</a>, and <a class="el" href="_tensor_info_8h_source.xhtml#l00255">TensorInfo::tensor_shape()</a>.</p>
+<p>References <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml#a1f4e725b8e1ea36b30e09dc08ae6961d">ITensorInfo::num_dimensions()</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00074">Dimensions< T >::set()</a>, and <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml#a7c66505457d00ece3aa4b34cab80757d">ITensorInfo::tensor_shape()</a>.</p>
-<p>Referenced by <a class="el" href="_helpers_8h_source.xhtml#l00411">compute_strides()</a>.</p>
-<div class="fragment"><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> {</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keyword">const</span> TensorShape &shape = info.tensor_shape();</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span> </div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="comment">// Create strides object</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  Strides strides(stride_x, fixed_strides...);</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span> </div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i = 1 + <span class="keyword">sizeof</span>...(Ts); i < info.num_dimensions(); ++i)</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  strides.set(i, shape[i - 1] * strides[i - 1]);</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> </div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="keywordflow">return</span> strides;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span> }</div></div><!-- fragment -->
+<p>Referenced by <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml#l00449">compute_strides()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00428"></a><span class="lineno"> 428</span> {</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="keyword">const</span> TensorShape &shape = info.tensor_shape();</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span> </div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="comment">// Create strides object</span></div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  Strides strides(stride_x, fixed_strides...);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span> </div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i = 1 + <span class="keyword">sizeof</span>...(Ts); i < info.num_dimensions(); ++i)</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  {</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  strides.set(i, shape[i - 1] * strides[i - 1]);</div><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> </div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="keywordflow">return</span> strides;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> }</div></div><!-- fragment -->
</div>
</div>
-<a class="anchor" id="a99bbb937f89cde6dfe346f566d41c707"></a>
+<a class="anchor" id="a8c35748731709927597cb5a2c227e682"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
@@ -4855,7 +6095,7 @@
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1_strides.xhtml">Strides</a> arm_compute::compute_strides </td>
<td>(</td>
- <td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_info.xhtml">TensorInfo</a> & </td>
+ <td class="paramtype">const <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml">ITensorInfo</a> & </td>
<td class="paramname"><em>info</em></td><td>)</td>
<td></td>
</tr>
@@ -4876,13 +6116,64 @@
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="classarm__compute_1_1_strides.xhtml" title="Strides of an item in bytes. ">Strides</a> object based on element size and tensor shape. </dd></dl>
-<p>Definition at line <a class="el" href="_helpers_8h_source.xhtml#l00411">411</a> of file <a class="el" href="_helpers_8h_source.xhtml">Helpers.h</a>.</p>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml#l00449">449</a> of file <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml">Helpers.h</a>.</p>
-<p>References <a class="el" href="_helpers_8h_source.xhtml#l00389">compute_strides()</a>, and <a class="el" href="_tensor_info_8h_source.xhtml#l00231">TensorInfo::element_size()</a>.</p>
-<div class="fragment"><div class="line"><a name="l00412"></a><span class="lineno"> 412</span> {</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute.xhtml#a99bbb937f89cde6dfe346f566d41c707">compute_strides</a>(info, info.element_size());</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a99bbb937f89cde6dfe346f566d41c707"><div class="ttname"><a href="namespacearm__compute.xhtml#a99bbb937f89cde6dfe346f566d41c707">arm_compute::compute_strides</a></div><div class="ttdeci">Strides compute_strides(const TensorInfo &info)</div><div class="ttdoc">Create a strides object based on the tensor dimensions. </div><div class="ttdef"><b>Definition:</b> <a href="_helpers_8h_source.xhtml#l00411">Helpers.h:411</a></div></div>
+<p>References <a class="el" href="_helpers_8inl_source.xhtml#l00249">auto_init_if_empty()</a>, <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml#l00427">compute_strides()</a>, <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml#aa459796b5489eca8a9160cb5dcf1a103">ITensorInfo::element_size()</a>, <a class="el" href="_helpers_8inl_source.xhtml#l00285">set_data_type_if_unknown()</a>, <a class="el" href="_helpers_8inl_source.xhtml#l00296">set_fixed_point_position_if_zero()</a>, <a class="el" href="_helpers_8inl_source.xhtml#l00274">set_format_if_unknown()</a>, and <a class="el" href="_helpers_8inl_source.xhtml#l00263">set_shape_if_empty()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00450"></a><span class="lineno"> 450</span> {</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute.xhtml#a8c35748731709927597cb5a2c227e682">compute_strides</a>(info, info.element_size());</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a8c35748731709927597cb5a2c227e682"><div class="ttname"><a href="namespacearm__compute.xhtml#a8c35748731709927597cb5a2c227e682">arm_compute::compute_strides</a></div><div class="ttdeci">Strides compute_strides(const ITensorInfo &info)</div><div class="ttdoc">Create a strides object based on the tensor dimensions. </div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_helpers_8h_source.xhtml#l00449">Helpers.h:449</a></div></div>
</div><!-- fragment -->
</div>
</div>
+<a class="anchor" id="a35fb9d1dde1b976f4b7d361aabcc7c0d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::unique_ptr<<a class="el" href="classarm__compute_1_1_kernel.xhtml">Kernel</a>> arm_compute::create_configure_kernel </td>
+ <td>(</td>
+ <td class="paramtype">T &&... </td>
+ <td class="paramname"><em>args</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Helper function to create and return a unique_ptr pointed to a CL kernel object It also calls the kernel's configuration. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">args</td><td>All the arguments that need pass to kernel's configuration.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>A unique pointer pointed to a CL kernel object </dd></dl>
+
+<p>Definition at line <a class="el" href="_c_l_helpers_8h_source.xhtml#l00071">71</a> of file <a class="el" href="_c_l_helpers_8h_source.xhtml">CLHelpers.h</a>.</p>
+<div class="fragment"><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  std::unique_ptr<Kernel> k = arm_compute::cpp14::make_unique<Kernel>();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  k->configure(std::forward<T>(args)...);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">return</span> k;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="abc72c95941485d8a068fa38372308574"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::unique_ptr<<a class="el" href="classarm__compute_1_1_kernel.xhtml">Kernel</a>> arm_compute::create_kernel </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Helper function to create and return a unique_ptr pointed to a CL kernel object. </p>
+<dl class="section return"><dt>Returns</dt><dd>A unique pointer pointed to a CL kernel object </dd></dl>
+
+<p>Definition at line <a class="el" href="_c_l_helpers_8h_source.xhtml#l00083">83</a> of file <a class="el" href="_c_l_helpers_8h_source.xhtml">CLHelpers.h</a>.</p>
+
+<p>References <a class="el" href="namespacearm__compute.xhtml#a4a351d5c39dec88af98a671da1c43fd6">get_arch_from_target()</a>, and <a class="el" href="namespacearm__compute.xhtml#a9d0143bdde8255313aae6ac020dd629c">get_target_from_device()</a>.</p>
+
+<p>Referenced by <a class="el" href="_c_l_kernel_library_8h_source.xhtml#l00203">CLKernelLibrary::set_device()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  std::unique_ptr<Kernel> k = arm_compute::cpp14::make_unique<Kernel>();</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">return</span> k;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> }</div></div><!-- fragment -->
+</div>
+</div>
<a class="anchor" id="abb7e0f23a4f2e63f39433f158dad47ab"></a>
<div class="memitem">
<div class="memproto">
@@ -4914,12 +6205,12 @@
</dl>
<dl class="section return"><dt>Returns</dt><dd>The size in bytes of the data type </dd></dl>
-<p>Definition at line <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00098">98</a> of file <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml">Utils.h</a>.</p>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00099">99</a> of file <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml">Utils.h</a>.</p>
-<p>References <a class="el" href="_error_8h_source.xhtml#l00031">ARM_COMPUTE_ERROR</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a56d8353718e6fdc78b8d69078a2cdb94">F16</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a44ad4ef5a76e6aa6fb3e3fa079a54fda">F32</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a1ad5f6f3069070ec4cbbdc94d5e61e0e">F64</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6e0b0886efb94aec797f6b830329b72c">S16</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58aa1e28eee0339658d39a8b4d325b56e9c">S32</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a115dca124dc6423c7a400b8a8a0270cc">S64</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6aafb0fced528eaac5fe170b763cda5975">S8</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6abd7ef6d4f35bc7d05c559b65032f15d1">SIZET</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58aef9ef3ebca4d2b64b6ec83808bafa5f2">U16</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58ac8bd5bedff8ef192d39a962afc0e19ee">U32</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a31d65cccd6593e4101db93fb878abcaa">U64</a>, and <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6669348b484e3008dca2bfa8e85e40b5">U8</a>.</p>
+<p>References <a class="el" href="_error_8h_source.xhtml#l00031">ARM_COMPUTE_ERROR</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a56d8353718e6fdc78b8d69078a2cdb94">F16</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a44ad4ef5a76e6aa6fb3e3fa079a54fda">F32</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a1ad5f6f3069070ec4cbbdc94d5e61e0e">F64</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a48d877702a2957f5a932c43a357866f9">QS16</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a11cde4d3551db3f9498d339a67189543">QS8</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6e0b0886efb94aec797f6b830329b72c">S16</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58aa1e28eee0339658d39a8b4d325b56e9c">S32</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a115dca124dc6423c7a400b8a8a0270cc">S64</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6aafb0fced528eaac5fe170b763cda5975">S8</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6abd7ef6d4f35bc7d05c559b65032f15d1">SIZET</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58aef9ef3ebca4d2b64b6ec83808bafa5f2">U16</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58ac8bd5bedff8ef192d39a962afc0e19ee">U32</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a31d65cccd6593e4101db93fb878abcaa">U64</a>, and <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6669348b484e3008dca2bfa8e85e40b5">U8</a>.</p>
-<p>Referenced by <a class="el" href="_tensor_info_8h_source.xhtml#l00231">TensorInfo::element_size()</a>.</p>
-<div class="fragment"><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">switch</span>(data_type)</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">case</span> DataType::U8:</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">case</span> DataType::S8:</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">case</span> DataType::U16:</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">case</span> DataType::S16:</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">case</span> DataType::F16:</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">return</span> 2;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">case</span> DataType::F32:</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">case</span> DataType::U32:</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">case</span> DataType::S32:</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">return</span> 4;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">case</span> DataType::F64:</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">case</span> DataType::U64:</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">case</span> DataType::S64:</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">return</span> 8;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">case</span> DataType::SIZET:</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">return</span> <span class="keyword">sizeof</span>(size_t);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">"Invalid data type"</span>);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> }</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00031">Error.h:31</a></div></div>
+<p>Referenced by <a class="el" href="_tensor_info_8h_source.xhtml#l00227">TensorInfo::element_size()</a>, and <a class="el" href="model__objects_2_alex_net_8h_source.xhtml#l00062">AlexNet< ITensorType, TensorType, SubTensorType, Accessor, ActivationLayerFunction, ConvolutionLayerFunction, FullyConnectedLayerFunction, NormalizationLayerFunction, PoolingLayerFunction, SoftmaxLayerFunction, dt >::init_weights()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">switch</span>(data_type)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">case</span> DataType::U8:</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">case</span> DataType::S8:</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">case</span> DataType::QS8:</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">case</span> DataType::U16:</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">case</span> DataType::S16:</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">case</span> DataType::F16:</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">case</span> DataType::QS16:</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">return</span> 2;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">case</span> DataType::F32:</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">case</span> DataType::U32:</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">case</span> DataType::S32:</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">return</span> 4;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">case</span> DataType::F64:</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">case</span> DataType::U64:</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">case</span> DataType::S64:</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">return</span> 8;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">case</span> DataType::SIZET:</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">return</span> <span class="keyword">sizeof</span>(size_t);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">"Invalid data type"</span>);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> }</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00031">Error.h:31</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -4972,11 +6263,11 @@
</dl>
<dl class="section return"><dt>Returns</dt><dd>The return type is a pair. The first element of the pair is the biggest data type needed for the first stage. The second element of the pair is the biggest data type needed for the second stage. </dd></dl>
-<p>Definition at line <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00435">435</a> of file <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml">Utils.h</a>.</p>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00441">441</a> of file <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml">Utils.h</a>.</p>
<p>References <a class="el" href="accumulate_8cl_source.xhtml#l00041">accumulate()</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6e0b0886efb94aec797f6b830329b72c">S16</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58aa1e28eee0339658d39a8b4d325b56e9c">S32</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58aef9ef3ebca4d2b64b6ec83808bafa5f2">U16</a>, and <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a696b031073e74bf2cb98e5ef201d4aa3">UNKNOWN</a>.</p>
-<div class="fragment"><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> {</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <a class="code" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> first_stage = DataType::UNKNOWN;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <a class="code" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> second_stage = DataType::UNKNOWN;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> </div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="keyword">auto</span> gez = [](<span class="keyword">const</span> int16_t &v)</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  {</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keywordflow">return</span> v >= 0;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  };</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span> </div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="keyword">auto</span> accu_neg = [](<span class="keyword">const</span> <span class="keywordtype">int</span> &first, <span class="keyword">const</span> <span class="keywordtype">int</span> &second)</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  {</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="keywordflow">return</span> first + (second < 0 ? second : 0);</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> </div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="keyword">auto</span> accu_pos = [](<span class="keyword">const</span> <span class="keywordtype">int</span> &first, <span class="keyword">const</span> <span class="keywordtype">int</span> &second)</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="keywordflow">return</span> first + (second > 0 ? second : 0);</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  };</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span> </div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> only_positive_coefficients = std::all_of(conv_row, conv_row + size, gez) && std::all_of(conv_col, conv_col + size, gez);</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> </div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <span class="keywordflow">if</span>(only_positive_coefficients)</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  {</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> max_row_value = <a class="code" href="accumulate_8cl.xhtml#a00e540076dd545ad59ac7482f8cdf514">std::accumulate</a>(conv_row, conv_row + size, 0) * UINT8_MAX;</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> max_value = <a class="code" href="accumulate_8cl.xhtml#a00e540076dd545ad59ac7482f8cdf514">std::accumulate</a>(conv_col, conv_col + size, 0) * max_row_value;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span> </div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  first_stage = (max_row_value <= UINT16_MAX) ? DataType::U16 : DataType::S32;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> </div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  second_stage = (max_value <= UINT16_MAX) ? DataType::U16 : DataType::S32;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  }</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  {</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> min_row_value = <a class="code" href="accumulate_8cl.xhtml#a00e540076dd545ad59ac7482f8cdf514">std::accumulate</a>(conv_row, conv_row + size, 0, accu_neg) * UINT8_MAX;</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> max_row_value = <a class="code" href="accumulate_8cl.xhtml#a00e540076dd545ad59ac7482f8cdf514">std::accumulate</a>(conv_row, conv_row + size, 0, accu_pos) * UINT8_MAX;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> neg_coeffs_sum = <a class="code" href="accumulate_8cl.xhtml#a00e540076dd545ad59ac7482f8cdf514">std::accumulate</a>(conv_col, conv_col + size, 0, accu_neg);</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> pos_coeffs_sum = <a class="code" href="accumulate_8cl.xhtml#a00e540076dd545ad59ac7482f8cdf514">std::accumulate</a>(conv_col, conv_col + size, 0, accu_pos);</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> min_value = neg_coeffs_sum * max_row_value + pos_coeffs_sum * min_row_value;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> max_value = neg_coeffs_sum * min_row_value + pos_coeffs_sum * max_row_value;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span> </div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  first_stage = ((INT16_MIN <= min_row_value) && (max_row_value <= INT16_MAX)) ? DataType::S16 : DataType::S32;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span> </div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  second_stage = ((INT16_MIN <= min_value) && (max_value <= INT16_MAX)) ? DataType::S16 : DataType::S32;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  }</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> </div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="keywordflow">return</span> std::make_pair(first_stage, second_stage);</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> }</div><div class="ttc" id="accumulate_8cl_xhtml_a00e540076dd545ad59ac7482f8cdf514"><div class="ttname"><a href="accumulate_8cl.xhtml#a00e540076dd545ad59ac7482f8cdf514">accumulate</a></div><div class="ttdeci">__kernel void accumulate(__global uchar *input_ptr, uint input_stride_x, uint input_step_x, uint input_stride_y, uint input_step_y, uint input_offset_first_element_in_bytes, __global uchar *accu_ptr, uint accu_stride_x, uint accu_step_x, uint accu_stride_y, uint accu_step_y, uint accu_offset_first_element_in_bytes)</div><div class="ttdoc">This function accumulates an input image into output image. </div><div class="ttdef"><b>Definition:</b> <a href="accumulate_8cl_source.xhtml#l00041">accumulate.cl:41</a></div></div>
-<div class="ttc" id="namespacearm__compute_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6"><div class="ttname"><a href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">arm_compute::DataType</a></div><div class="ttdeci">DataType</div><div class="ttdoc">Available data types. </div><div class="ttdef"><b>Definition:</b> <a href="_types_8h_source.xhtml#l00060">Types.h:60</a></div></div>
+<div class="fragment"><div class="line"><a name="l00442"></a><span class="lineno"> 442</span> {</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <a class="code" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> first_stage = DataType::UNKNOWN;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <a class="code" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> second_stage = DataType::UNKNOWN;</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="keyword">auto</span> gez = [](<span class="keyword">const</span> int16_t &v)</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  {</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">return</span> v >= 0;</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  };</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span> </div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keyword">auto</span> accu_neg = [](<span class="keyword">const</span> <span class="keywordtype">int</span> &first, <span class="keyword">const</span> <span class="keywordtype">int</span> &second)</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  {</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="keywordflow">return</span> first + (second < 0 ? second : 0);</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  };</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span> </div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="keyword">auto</span> accu_pos = [](<span class="keyword">const</span> <span class="keywordtype">int</span> &first, <span class="keyword">const</span> <span class="keywordtype">int</span> &second)</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  {</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="keywordflow">return</span> first + (second > 0 ? second : 0);</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  };</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span> </div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> only_positive_coefficients = std::all_of(conv_row, conv_row + size, gez) && std::all_of(conv_col, conv_col + size, gez);</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> </div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="keywordflow">if</span>(only_positive_coefficients)</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  {</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> max_row_value = <a class="code" href="accumulate_8cl.xhtml#a00e540076dd545ad59ac7482f8cdf514">std::accumulate</a>(conv_row, conv_row + size, 0) * UINT8_MAX;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> max_value = <a class="code" href="accumulate_8cl.xhtml#a00e540076dd545ad59ac7482f8cdf514">std::accumulate</a>(conv_col, conv_col + size, 0) * max_row_value;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span> </div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  first_stage = (max_row_value <= UINT16_MAX) ? DataType::U16 : DataType::S32;</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span> </div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  second_stage = (max_value <= UINT16_MAX) ? DataType::U16 : DataType::S32;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  }</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  {</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> min_row_value = <a class="code" href="accumulate_8cl.xhtml#a00e540076dd545ad59ac7482f8cdf514">std::accumulate</a>(conv_row, conv_row + size, 0, accu_neg) * UINT8_MAX;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> max_row_value = <a class="code" href="accumulate_8cl.xhtml#a00e540076dd545ad59ac7482f8cdf514">std::accumulate</a>(conv_row, conv_row + size, 0, accu_pos) * UINT8_MAX;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> neg_coeffs_sum = <a class="code" href="accumulate_8cl.xhtml#a00e540076dd545ad59ac7482f8cdf514">std::accumulate</a>(conv_col, conv_col + size, 0, accu_neg);</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> pos_coeffs_sum = <a class="code" href="accumulate_8cl.xhtml#a00e540076dd545ad59ac7482f8cdf514">std::accumulate</a>(conv_col, conv_col + size, 0, accu_pos);</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> min_value = neg_coeffs_sum * max_row_value + pos_coeffs_sum * min_row_value;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> max_value = neg_coeffs_sum * min_row_value + pos_coeffs_sum * max_row_value;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> </div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  first_stage = ((INT16_MIN <= min_row_value) && (max_row_value <= INT16_MAX)) ? DataType::S16 : DataType::S32;</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span> </div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  second_stage = ((INT16_MIN <= min_value) && (max_value <= INT16_MAX)) ? DataType::S16 : DataType::S32;</div><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> </div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="keywordflow">return</span> std::make_pair(first_stage, second_stage);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span> }</div><div class="ttc" id="accumulate_8cl_xhtml_a00e540076dd545ad59ac7482f8cdf514"><div class="ttname"><a href="accumulate_8cl.xhtml#a00e540076dd545ad59ac7482f8cdf514">accumulate</a></div><div class="ttdeci">__kernel void accumulate(__global uchar *input_ptr, uint input_stride_x, uint input_step_x, uint input_stride_y, uint input_step_y, uint input_offset_first_element_in_bytes, __global uchar *accu_ptr, uint accu_stride_x, uint accu_step_x, uint accu_stride_y, uint accu_step_y, uint accu_offset_first_element_in_bytes)</div><div class="ttdoc">This function accumulates an input image into output image. </div><div class="ttdef"><b>Definition:</b> <a href="accumulate_8cl_source.xhtml#l00041">accumulate.cl:41</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6"><div class="ttname"><a href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">arm_compute::DataType</a></div><div class="ttdeci">DataType</div><div class="ttdoc">Available data types. </div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_types_8h_source.xhtml#l00060">Types.h:60</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -5022,10 +6313,10 @@
</dl>
<dl class="section return"><dt>Returns</dt><dd>The return is the biggest data type needed to do the convolution </dd></dl>
-<p>Definition at line <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00491">491</a> of file <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml">Utils.h</a>.</p>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00497">497</a> of file <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml">Utils.h</a>.</p>
-<p>References <a class="el" href="accumulate_8cl_source.xhtml#l00041">accumulate()</a>, <a class="el" href="namespacearm__compute.xhtml#ab72adf11888176ec19224deef7b1a7dc">lower_string()</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6e0b0886efb94aec797f6b830329b72c">S16</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58aa1e28eee0339658d39a8b4d325b56e9c">S32</a>, <a class="el" href="namespacearm__compute.xhtml#a6fd2c972d67298469a6aad75879fffab">scaled_dimensions()</a>, <a class="el" href="namespacearm__compute.xhtml#ac955c978e18cc9bf6daea31f13076fba">string_from_activation_func()</a>, <a class="el" href="namespacearm__compute.xhtml#abd15add5c6c7de5c8205ce236875aadd">string_from_border_mode()</a>, <a class="el" href="namespacearm__compute.xhtml#a106c203dd6af234d38452ea0ee7b2ddc">string_from_channel()</a>, <a class="el" href="namespacearm__compute.xhtml#aefa1d9648995e5eccc693c690e27aa88">string_from_data_type()</a>, <a class="el" href="namespacearm__compute.xhtml#a9c92c867fc64454545668d87b20979eb">string_from_format()</a>, <a class="el" href="namespacearm__compute.xhtml#ade34f5e72f050fd3665f3294dfb15850">string_from_interpolation_policy()</a>, <a class="el" href="namespacearm__compute.xhtml#a018795ab2489d17309e158ff5c060ab1">string_from_matrix_pattern()</a>, <a class="el" href="namespacearm__compute.xhtml#a14831547f57ecf5f0deef888ad41ad30">string_from_non_linear_filter_function()</a>, and <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58aef9ef3ebca4d2b64b6ec83808bafa5f2">U16</a>.</p>
-<div class="fragment"><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="keyword">auto</span> gez = [](<span class="keyword">const</span> int16_t v)</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  {</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <span class="keywordflow">return</span> v >= 0;</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  };</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> </div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> only_positive_coefficients = std::all_of(conv, conv + size, gez);</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span> </div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">if</span>(only_positive_coefficients)</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="keyword">const</span> <span class="keywordtype">int</span> max_conv_value = <a class="code" href="accumulate_8cl.xhtml#a00e540076dd545ad59ac7482f8cdf514">std::accumulate</a>(conv, conv + size, 0) * UINT8_MAX;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="keywordflow">if</span>(max_conv_value <= UINT16_MAX)</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  {</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span class="keywordflow">return</span> DataType::U16;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  }</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  {</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <span class="keywordflow">return</span> DataType::S32;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  }</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  }</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  {</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> min_value = <a class="code" href="accumulate_8cl.xhtml#a00e540076dd545ad59ac7482f8cdf514">std::accumulate</a>(conv, conv + size, 0, [](<span class="keywordtype">int</span> a, <span class="keywordtype">int</span> b)</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  {</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <span class="keywordflow">return</span> b < 0 ? a + b : a;</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  })</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  * UINT8_MAX;</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span> </div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> max_value = <a class="code" href="accumulate_8cl.xhtml#a00e540076dd545ad59ac7482f8cdf514">std::accumulate</a>(conv, conv + size, 0, [](<span class="keywordtype">int</span> a, <span class="keywordtype">int</span> b)</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  {</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="keywordflow">return</span> b > 0 ? a + b : a;</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  })</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  * UINT8_MAX;</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span> </div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="keywordflow">if</span>((INT16_MIN <= min_value) && (INT16_MAX >= max_value))</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  {</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <span class="keywordflow">return</span> DataType::S16;</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  }</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  {</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <span class="keywordflow">return</span> DataType::S32;</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  }</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  }</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span> }</div><div class="ttc" id="accumulate_8cl_xhtml_a00e540076dd545ad59ac7482f8cdf514"><div class="ttname"><a href="accumulate_8cl.xhtml#a00e540076dd545ad59ac7482f8cdf514">accumulate</a></div><div class="ttdeci">__kernel void accumulate(__global uchar *input_ptr, uint input_stride_x, uint input_step_x, uint input_stride_y, uint input_step_y, uint input_offset_first_element_in_bytes, __global uchar *accu_ptr, uint accu_stride_x, uint accu_step_x, uint accu_stride_y, uint accu_step_y, uint accu_offset_first_element_in_bytes)</div><div class="ttdoc">This function accumulates an input image into output image. </div><div class="ttdef"><b>Definition:</b> <a href="accumulate_8cl_source.xhtml#l00041">accumulate.cl:41</a></div></div>
+<p>References <a class="el" href="accumulate_8cl_source.xhtml#l00041">accumulate()</a>, <a class="el" href="namespacearm__compute.xhtml#a532fb45c0261724a4c2e755cfd3a44e6">lower_string()</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6e0b0886efb94aec797f6b830329b72c">S16</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58aa1e28eee0339658d39a8b4d325b56e9c">S32</a>, <a class="el" href="namespacearm__compute.xhtml#a6fd2c972d67298469a6aad75879fffab">scaled_dimensions()</a>, <a class="el" href="namespacearm__compute.xhtml#ac955c978e18cc9bf6daea31f13076fba">string_from_activation_func()</a>, <a class="el" href="namespacearm__compute.xhtml#abd15add5c6c7de5c8205ce236875aadd">string_from_border_mode()</a>, <a class="el" href="namespacearm__compute.xhtml#a106c203dd6af234d38452ea0ee7b2ddc">string_from_channel()</a>, <a class="el" href="namespacearm__compute.xhtml#aefa1d9648995e5eccc693c690e27aa88">string_from_data_type()</a>, <a class="el" href="namespacearm__compute.xhtml#a9c92c867fc64454545668d87b20979eb">string_from_format()</a>, <a class="el" href="namespacearm__compute.xhtml#ade34f5e72f050fd3665f3294dfb15850">string_from_interpolation_policy()</a>, <a class="el" href="namespacearm__compute.xhtml#a018795ab2489d17309e158ff5c060ab1">string_from_matrix_pattern()</a>, <a class="el" href="namespacearm__compute.xhtml#a14831547f57ecf5f0deef888ad41ad30">string_from_non_linear_filter_function()</a>, <a class="el" href="namespacearm__compute.xhtml#afb5698af5404d5d11e3516c87b6e7041">string_from_norm_type()</a>, and <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58aef9ef3ebca4d2b64b6ec83808bafa5f2">U16</a>.</p>
+<div class="fragment"><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="keyword">auto</span> gez = [](<span class="keyword">const</span> int16_t v)</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  {</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="keywordflow">return</span> v >= 0;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  };</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span> </div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> only_positive_coefficients = std::all_of(conv, conv + size, gez);</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span> </div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keywordflow">if</span>(only_positive_coefficients)</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  {</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> max_conv_value = <a class="code" href="accumulate_8cl.xhtml#a00e540076dd545ad59ac7482f8cdf514">std::accumulate</a>(conv, conv + size, 0) * UINT8_MAX;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <span class="keywordflow">if</span>(max_conv_value <= UINT16_MAX)</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  {</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <span class="keywordflow">return</span> DataType::U16;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  }</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  {</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="keywordflow">return</span> DataType::S32;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  }</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  }</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  {</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> min_value = <a class="code" href="accumulate_8cl.xhtml#a00e540076dd545ad59ac7482f8cdf514">std::accumulate</a>(conv, conv + size, 0, [](<span class="keywordtype">int</span> a, <span class="keywordtype">int</span> b)</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  {</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="keywordflow">return</span> b < 0 ? a + b : a;</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  })</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  * UINT8_MAX;</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span> </div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> max_value = <a class="code" href="accumulate_8cl.xhtml#a00e540076dd545ad59ac7482f8cdf514">std::accumulate</a>(conv, conv + size, 0, [](<span class="keywordtype">int</span> a, <span class="keywordtype">int</span> b)</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  {</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <span class="keywordflow">return</span> b > 0 ? a + b : a;</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  })</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  * UINT8_MAX;</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span> </div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <span class="keywordflow">if</span>((INT16_MIN <= min_value) && (INT16_MAX >= max_value))</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  {</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <span class="keywordflow">return</span> DataType::S16;</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  }</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="keywordflow">else</span></div><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="keywordflow">return</span> DataType::S32;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  }</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  }</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span> }</div><div class="ttc" id="accumulate_8cl_xhtml_a00e540076dd545ad59ac7482f8cdf514"><div class="ttname"><a href="accumulate_8cl.xhtml#a00e540076dd545ad59ac7482f8cdf514">accumulate</a></div><div class="ttdeci">__kernel void accumulate(__global uchar *input_ptr, uint input_stride_x, uint input_step_x, uint input_stride_y, uint input_step_y, uint input_offset_first_element_in_bytes, __global uchar *accu_ptr, uint accu_stride_x, uint accu_step_x, uint accu_stride_y, uint accu_step_y, uint accu_offset_first_element_in_bytes)</div><div class="ttdoc">This function accumulates an input image into output image. </div><div class="ttdef"><b>Definition:</b> <a href="accumulate_8cl_source.xhtml#l00041">accumulate.cl:41</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -5060,10 +6351,134 @@
</dl>
<dl class="section return"><dt>Returns</dt><dd>The size in bytes of the pixel format </dd></dl>
-<p>Definition at line <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00195">195</a> of file <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml">Utils.h</a>.</p>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00201">201</a> of file <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml">Utils.h</a>.</p>
<p>References <a class="el" href="_error_8h_source.xhtml#l00031">ARM_COMPUTE_ERROR</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a56d8353718e6fdc78b8d69078a2cdb94">F16</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a44ad4ef5a76e6aa6fb3e3fa079a54fda">F32</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58ab08f0cb36474118c5bbc03b3a172a778">IYUV</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a202f5d8c2c70d31048154d8b8b28e755">NV12</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a8e9f6aa1af7e0abbc7e64521e6ffe1b4">NV21</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a30ff380a3be74628024063a99fba10f0">RGB888</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a165f06116e7b8d9b2481dfc805db4619">RGBA8888</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6e0b0886efb94aec797f6b830329b72c">S16</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58aa1e28eee0339658d39a8b4d325b56e9c">S32</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58aef9ef3ebca4d2b64b6ec83808bafa5f2">U16</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58ac8bd5bedff8ef192d39a962afc0e19ee">U32</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6669348b484e3008dca2bfa8e85e40b5">U8</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a696b031073e74bf2cb98e5ef201d4aa3">UNKNOWN</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a079eb95759d2ad31254f659d63651825">UV88</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58af557448a61ad2927194f63442e131dfa">UYVY422</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a11cfa56ee0ddbbc30a2fd189d7475f4c">YUV444</a>, and <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a481e7a6945eb9f23e87f2de780b2e164">YUYV422</a>.</p>
-<div class="fragment"><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">switch</span>(format)</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">case</span> Format::U8:</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">case</span> Format::UV88:</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">case</span> Format::RGB888:</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">case</span> Format::RGBA8888:</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">case</span> Format::YUYV422:</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">case</span> Format::UYVY422:</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">return</span> DataType::U8;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">case</span> Format::U16:</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">return</span> DataType::U16;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">case</span> Format::S16:</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">return</span> DataType::S16;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">case</span> Format::U32:</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">return</span> DataType::U32;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">case</span> Format::S32:</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">return</span> DataType::S32;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">case</span> Format::F16:</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">return</span> DataType::F16;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">case</span> Format::F32:</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">return</span> DataType::F32;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="comment">//Doesn't make sense for planar formats:</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">case</span> Format::NV12:</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">case</span> Format::NV21:</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">case</span> Format::IYUV:</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">case</span> Format::YUV444:</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">"Not supported data_type for given format"</span>);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">return</span> DataType::UNKNOWN;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  }</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> }</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00031">Error.h:31</a></div></div>
+
+<p>Referenced by <a class="el" href="_raw_tensor_8cpp_source.xhtml#l00112">RawTensor::data_type()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">switch</span>(format)</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">case</span> Format::U8:</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">case</span> Format::UV88:</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">case</span> Format::RGB888:</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">case</span> Format::RGBA8888:</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">case</span> Format::YUYV422:</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">case</span> Format::UYVY422:</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">return</span> DataType::U8;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">case</span> Format::U16:</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">return</span> DataType::U16;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">case</span> Format::S16:</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">return</span> DataType::S16;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">case</span> Format::U32:</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">return</span> DataType::U32;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">case</span> Format::S32:</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">return</span> DataType::S32;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">case</span> Format::F16:</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">return</span> DataType::F16;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">case</span> Format::F32:</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">return</span> DataType::F32;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="comment">//Doesn't make sense for planar formats:</span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">case</span> Format::NV12:</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">case</span> Format::NV21:</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">case</span> Format::IYUV:</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">case</span> Format::YUV444:</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">"Not supported data_type for given format"</span>);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordflow">return</span> DataType::UNKNOWN;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  }</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> }</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00031">Error.h:31</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a5930b66fce0674d707fbf4f2dfcacc8f"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void arm_compute::debug </td>
+ <td>(</td>
+ <td class="paramtype">const char * </td>
+ <td class="paramname"><em>function</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char * </td>
+ <td class="paramname"><em>file</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const int </td>
+ <td class="paramname"><em>line</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char * </td>
+ <td class="paramname"><em>msg</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"><em>...</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Print a debug message. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">function</td><td>Function in which the error occurred. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">file</td><td>Name of the file where the error occurred. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">line</td><td>Line on which the error occurred. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">msg</td><td>Message to display before aborting. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">...</td><td>Variable number of arguments of the message. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aceaaf77291e83ca0dfaed677c93ce350"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">uint8_t delta_bilinear_c1u8 </td>
+ <td>(</td>
+ <td class="paramtype">const uint8_t * </td>
+ <td class="paramname"><em>pixel_ptr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"><em>stride</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float </td>
+ <td class="paramname"><em>dx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float </td>
+ <td class="paramname"><em>dy</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Computes bilinear interpolation using the pointer to the top-left pixel and the pixel's distance between the real coordinates and the smallest following integer coordinates. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">pixel_ptr</td><td>Pointer to the top-left pixel value. Format: Single channel U8 </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">stride</td><td>Stride to access the bottom-left and bottom-right pixel values </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">dx</td><td>Pixel's distance between the X real coordinate and the smallest X following integer </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">dy</td><td>Pixel's distance between the Y real coordinate and the smallest Y following integer</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section note"><dt>Note</dt><dd>dx and dy must be in the range [0, 1.0]</dd></dl>
+<dl class="section return"><dt>Returns</dt><dd>The bilinear interpolated pixel value </dd></dl>
+
+<p>Definition at line <a class="el" href="_helpers_8inl_source.xhtml#l00032">32</a> of file <a class="el" href="_helpers_8inl_source.xhtml">Helpers.inl</a>.</p>
+
+<p>References <a class="el" href="_error_8h_source.xhtml#l00124">ARM_COMPUTE_ERROR_ON</a>.</p>
+
+<p>Referenced by <a class="el" href="_helpers_8inl_source.xhtml#l00052">pixel_bilinear_c1u8()</a>, and <a class="el" href="_helpers_8inl_source.xhtml#l00065">pixel_bilinear_c1u8_clamp()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(pixel_ptr == <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">const</span> <span class="keywordtype">float</span> dx1 = 1.0f - dx;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">const</span> <span class="keywordtype">float</span> dy1 = 1.0f - dy;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">const</span> <span class="keywordtype">float</span> a00 = *pixel_ptr;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">const</span> <span class="keywordtype">float</span> a01 = *(pixel_ptr + 1);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">const</span> <span class="keywordtype">float</span> a10 = *(pixel_ptr + stride);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">const</span> <span class="keywordtype">float</span> a11 = *(pixel_ptr + stride + 1);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">const</span> <span class="keywordtype">float</span> w1 = dx1 * dy1;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">const</span> <span class="keywordtype">float</span> w2 = dx * dy1;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">const</span> <span class="keywordtype">float</span> w3 = dx1 * dy;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">const</span> <span class="keywordtype">float</span> w4 = dx * dy;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">return</span> a00 * w1 + a01 * w2 + a10 * w3 + a11 * w4;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> }</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00124">Error.h:124</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -5094,10 +6509,10 @@
<p>Calculate the rounded up quotient of val / m. </p>
-<p>Definition at line <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00058">58</a> of file <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml">Utils.h</a>.</p>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00059">59</a> of file <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml">Utils.h</a>.</p>
<p>References <a class="el" href="namespacearm__compute.xhtml#a64c17a5a42d2499a1626222ff9753b4d">build_information()</a>, and <a class="el" href="namespacearm__compute.xhtml#aefa4a4d3136d77b85cccfce344f9f37f">read_file()</a>.</p>
-<div class="fragment"><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">return</span> (val + m - 1) / m;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> }</div></div><!-- fragment -->
+<div class="fragment"><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">return</span> (val + m - 1) / m;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> }</div></div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a34b06c0cd94808a77b697e79880b84b0"></a>
@@ -5131,10 +6546,12 @@
</dl>
<dl class="section return"><dt>Returns</dt><dd>The size in bytes of the data type </dd></dl>
-<p>Definition at line <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00169">169</a> of file <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml">Utils.h</a>.</p>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00172">172</a> of file <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml">Utils.h</a>.</p>
-<p>References <a class="el" href="_error_8h_source.xhtml#l00031">ARM_COMPUTE_ERROR</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a56d8353718e6fdc78b8d69078a2cdb94">F16</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a44ad4ef5a76e6aa6fb3e3fa079a54fda">F32</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6e0b0886efb94aec797f6b830329b72c">S16</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58aa1e28eee0339658d39a8b4d325b56e9c">S32</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58aef9ef3ebca4d2b64b6ec83808bafa5f2">U16</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58ac8bd5bedff8ef192d39a962afc0e19ee">U32</a>, and <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6669348b484e3008dca2bfa8e85e40b5">U8</a>.</p>
-<div class="fragment"><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">switch</span>(dt)</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">case</span> DataType::U8:</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">case</span> DataType::U16:</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">case</span> DataType::S16:</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">case</span> DataType::F16:</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">return</span> 2;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">case</span> DataType::U32:</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">case</span> DataType::S32:</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">case</span> DataType::F32:</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">return</span> 4;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">"Undefined element size for given data type"</span>);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> }</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00031">Error.h:31</a></div></div>
+<p>References <a class="el" href="_error_8h_source.xhtml#l00031">ARM_COMPUTE_ERROR</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a56d8353718e6fdc78b8d69078a2cdb94">F16</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a44ad4ef5a76e6aa6fb3e3fa079a54fda">F32</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a48d877702a2957f5a932c43a357866f9">QS16</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a11cde4d3551db3f9498d339a67189543">QS8</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6e0b0886efb94aec797f6b830329b72c">S16</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58aa1e28eee0339658d39a8b4d325b56e9c">S32</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6aafb0fced528eaac5fe170b763cda5975">S8</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58aef9ef3ebca4d2b64b6ec83808bafa5f2">U16</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58ac8bd5bedff8ef192d39a962afc0e19ee">U32</a>, and <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6669348b484e3008dca2bfa8e85e40b5">U8</a>.</p>
+
+<p>Referenced by <a class="el" href="_raw_tensor_8cpp_source.xhtml#l00091">RawTensor::element_size()</a>, <a class="el" href="_validate_8h_source.xhtml#l00549">error_on_value_not_representable_in_fixed_point()</a>, and <a class="el" href="_validation_8cpp_source.xhtml#l00196">arm_compute::test::validation::validate()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">switch</span>(dt)</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">case</span> DataType::S8:</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">case</span> DataType::U8:</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">case</span> DataType::QS8:</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">case</span> DataType::U16:</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">case</span> DataType::S16:</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">case</span> DataType::QS16:</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">case</span> DataType::F16:</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">return</span> 2;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">case</span> DataType::U32:</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">case</span> DataType::S32:</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">case</span> DataType::F32:</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">return</span> 4;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">"Undefined element size for given data type"</span>);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> }</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00031">Error.h:31</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -5189,7 +6606,7 @@
</dl>
<dl class="section note"><dt>Note</dt><dd>If any dimension of the lws is greater than the global workgroup size then no lws will be passed. </dd></dl>
-<p>Referenced by <a class="el" href="_i_c_l_kernel_8h_source.xhtml#l00096">ICLKernel::add_argument()</a>.</p>
+<p>Referenced by <a class="el" href="_i_c_l_kernel_8h_source.xhtml#l00097">ICLKernel::add_argument()</a>.</p>
</div>
</div>
@@ -5310,11 +6727,11 @@
</dd>
</dl>
-<p>Definition at line <a class="el" href="_validate_8h_source.xhtml#l00292">292</a> of file <a class="el" href="_validate_8h_source.xhtml">Validate.h</a>.</p>
+<p>Definition at line <a class="el" href="_validate_8h_source.xhtml#l00436">436</a> of file <a class="el" href="_validate_8h_source.xhtml">Validate.h</a>.</p>
-<p>References <a class="el" href="_error_8h_source.xhtml#l00110">ARM_COMPUTE_ERROR_ON_LOC</a>, <a class="el" href="_error_8h_source.xhtml#l00049">ARM_COMPUTE_UNUSED</a>, and <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a696b031073e74bf2cb98e5ef201d4aa3">UNKNOWN</a>.</p>
-<div class="fragment"><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <a class="code" href="_error_8h.xhtml#ac90c3bce005225cbaa4a43740917bb58">ARM_COMPUTE_ERROR_ON_LOC</a>(cn == Channel::UNKNOWN, <span class="keyword">function</span>, file, line);</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="keyword">const</span> std::array<T, <span class="keyword">sizeof</span>...(Ts)> channels_array{ { std::forward<Ts>(channels)... } };</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(channels_array);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <a class="code" href="_error_8h.xhtml#ac90c3bce005225cbaa4a43740917bb58">ARM_COMPUTE_ERROR_ON_LOC</a>(channel != cn && std::none_of(channels_array.begin(), channels_array.end(), [&](<span class="keyword">const</span> T & f)</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="keywordflow">return</span> f == cn;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  }),</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keyword">function</span>, file, line);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> }</div><div class="ttc" id="_error_8h_xhtml_a4103adbb45806b2f2002d44b91d0d206"><div class="ttname"><a href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a></div><div class="ttdeci">#define ARM_COMPUTE_UNUSED(var)</div><div class="ttdoc">To avoid unused variables warnings. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00049">Error.h:49</a></div></div>
-<div class="ttc" id="_error_8h_xhtml_ac90c3bce005225cbaa4a43740917bb58"><div class="ttname"><a href="_error_8h.xhtml#ac90c3bce005225cbaa4a43740917bb58">ARM_COMPUTE_ERROR_ON_LOC</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON_LOC(cond, func, file, line)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00110">Error.h:110</a></div></div>
+<p>References <a class="el" href="_error_8h_source.xhtml#l00134">ARM_COMPUTE_ERROR_ON_LOC</a>, <a class="el" href="_error_8h_source.xhtml#l00049">ARM_COMPUTE_UNUSED</a>, and <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a696b031073e74bf2cb98e5ef201d4aa3">UNKNOWN</a>.</p>
+<div class="fragment"><div class="line"><a name="l00438"></a><span class="lineno"> 438</span> {</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <a class="code" href="_error_8h.xhtml#ac90c3bce005225cbaa4a43740917bb58">ARM_COMPUTE_ERROR_ON_LOC</a>(cn == Channel::UNKNOWN, <span class="keyword">function</span>, file, line);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> </div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keyword">const</span> std::array<T, <span class="keyword">sizeof</span>...(Ts)> channels_array{ { std::forward<Ts>(channels)... } };</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(channels_array);</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <a class="code" href="_error_8h.xhtml#ac90c3bce005225cbaa4a43740917bb58">ARM_COMPUTE_ERROR_ON_LOC</a>(channel != cn && std::none_of(channels_array.begin(), channels_array.end(), [&](<span class="keyword">const</span> T & f)</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="keywordflow">return</span> f == cn;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  }),</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="keyword">function</span>, file, line);</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> }</div><div class="ttc" id="_error_8h_xhtml_a4103adbb45806b2f2002d44b91d0d206"><div class="ttname"><a href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a></div><div class="ttdeci">#define ARM_COMPUTE_UNUSED(var)</div><div class="ttdoc">To avoid unused variables warnings. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00049">Error.h:49</a></div></div>
+<div class="ttc" id="_error_8h_xhtml_ac90c3bce005225cbaa4a43740917bb58"><div class="ttname"><a href="_error_8h.xhtml#ac90c3bce005225cbaa4a43740917bb58">ARM_COMPUTE_ERROR_ON_LOC</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON_LOC(cond, func, file, line)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00134">Error.h:134</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -5499,12 +6916,12 @@
</dd>
</dl>
-<p>Definition at line <a class="el" href="_validate_8h_source.xhtml#l00259">259</a> of file <a class="el" href="_validate_8h_source.xhtml">Validate.h</a>.</p>
+<p>Definition at line <a class="el" href="_validate_8h_source.xhtml#l00403">403</a> of file <a class="el" href="_validate_8h_source.xhtml">Validate.h</a>.</p>
-<p>References <a class="el" href="_error_8h_source.xhtml#l00092">ARM_COMPUTE_ERROR_ON_LOC_MSG</a>, <a class="el" href="_error_8h_source.xhtml#l00049">ARM_COMPUTE_UNUSED</a>, <a class="el" href="_validate_8h_source.xhtml#l00227">error_on_data_type_not_in()</a>, <a class="el" href="classarm__compute_1_1_i_tensor.xhtml#a8df2a8ec8fcd4258450270f15651b6c9">ITensor::info()</a>, and <a class="el" href="_tensor_info_8h_source.xhtml#l00247">TensorInfo::num_channels()</a>.</p>
-<div class="fragment"><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <a class="code" href="namespacearm__compute.xhtml#a0c52339d3cb372d145deeafb5a313807">error_on_data_type_not_in</a>(<span class="keyword">function</span>, file, line, tensor, std::forward<T>(dt), std::forward<Ts>(dts)...);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keyword">const</span> <span class="keywordtype">size_t</span> tensor_nc = tensor->info()->num_channels();</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(tensor_nc);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <a class="code" href="_error_8h.xhtml#a1b62e396a1789909dadda61ea4cda96f">ARM_COMPUTE_ERROR_ON_LOC_MSG</a>(tensor_nc != num_channels, <span class="keyword">function</span>, file, line, <span class="stringliteral">"Number of channels %d. Required number of channels %d"</span>, tensor_nc, num_channels);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> }</div><div class="ttc" id="_error_8h_xhtml_a1b62e396a1789909dadda61ea4cda96f"><div class="ttname"><a href="_error_8h.xhtml#a1b62e396a1789909dadda61ea4cda96f">ARM_COMPUTE_ERROR_ON_LOC_MSG</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON_LOC_MSG(cond, func, file, line,...)</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00092">Error.h:92</a></div></div>
+<p>References <a class="el" href="_error_8h_source.xhtml#l00116">ARM_COMPUTE_ERROR_ON_LOC_MSG</a>, <a class="el" href="_error_8h_source.xhtml#l00049">ARM_COMPUTE_UNUSED</a>, <a class="el" href="_validate_8h_source.xhtml#l00371">error_on_data_type_not_in()</a>, <a class="el" href="classarm__compute_1_1_i_tensor.xhtml#a0e95dc1e53c361348314873b168ae237">ITensor::info()</a>, and <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml#ad7829ae79223ab87f9da4c0bd7d229ba">ITensorInfo::num_channels()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <a class="code" href="namespacearm__compute.xhtml#a0c52339d3cb372d145deeafb5a313807">error_on_data_type_not_in</a>(<span class="keyword">function</span>, file, line, tensor, std::forward<T>(dt), std::forward<Ts>(dts)...);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span> </div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="keyword">const</span> <span class="keywordtype">size_t</span> tensor_nc = tensor->info()->num_channels();</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(tensor_nc);</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> </div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  <a class="code" href="_error_8h.xhtml#a1b62e396a1789909dadda61ea4cda96f">ARM_COMPUTE_ERROR_ON_LOC_MSG</a>(tensor_nc != num_channels, <span class="keyword">function</span>, file, line, <span class="stringliteral">"Number of channels %d. Required number of channels %d"</span>, tensor_nc, num_channels);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span> }</div><div class="ttc" id="_error_8h_xhtml_a1b62e396a1789909dadda61ea4cda96f"><div class="ttname"><a href="_error_8h.xhtml#a1b62e396a1789909dadda61ea4cda96f">ARM_COMPUTE_ERROR_ON_LOC_MSG</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON_LOC_MSG(cond, func, file, line,...)</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00116">Error.h:116</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a4103adbb45806b2f2002d44b91d0d206"><div class="ttname"><a href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a></div><div class="ttdeci">#define ARM_COMPUTE_UNUSED(var)</div><div class="ttdoc">To avoid unused variables warnings. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00049">Error.h:49</a></div></div>
-<div class="ttc" id="namespacearm__compute_xhtml_a0c52339d3cb372d145deeafb5a313807"><div class="ttname"><a href="namespacearm__compute.xhtml#a0c52339d3cb372d145deeafb5a313807">arm_compute::error_on_data_type_not_in</a></div><div class="ttdeci">void error_on_data_type_not_in(const char *function, const char *file, const int line, const ITensor *tensor, T &&dt, Ts &&...dts)</div><div class="ttdoc">Throw an error if the data type of the passed tensor does not match any of the data types provided...</div><div class="ttdef"><b>Definition:</b> <a href="_validate_8h_source.xhtml#l00227">Validate.h:227</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a0c52339d3cb372d145deeafb5a313807"><div class="ttname"><a href="namespacearm__compute.xhtml#a0c52339d3cb372d145deeafb5a313807">arm_compute::error_on_data_type_not_in</a></div><div class="ttdeci">void error_on_data_type_not_in(const char *function, const char *file, const int line, const ITensor *tensor, T &&dt, Ts &&...dts)</div><div class="ttdoc">Throw an error if the data type of the passed tensor does not match any of the data types provided...</div><div class="ttdef"><b>Definition:</b> <a href="_validate_8h_source.xhtml#l00371">Validate.h:371</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -5569,16 +6986,16 @@
</dd>
</dl>
-<p>Definition at line <a class="el" href="_validate_8h_source.xhtml#l00227">227</a> of file <a class="el" href="_validate_8h_source.xhtml">Validate.h</a>.</p>
+<p>Definition at line <a class="el" href="_validate_8h_source.xhtml#l00371">371</a> of file <a class="el" href="_validate_8h_source.xhtml">Validate.h</a>.</p>
-<p>References <a class="el" href="_error_8h_source.xhtml#l00110">ARM_COMPUTE_ERROR_ON_LOC</a>, <a class="el" href="_error_8h_source.xhtml#l00092">ARM_COMPUTE_ERROR_ON_LOC_MSG</a>, <a class="el" href="_error_8h_source.xhtml#l00049">ARM_COMPUTE_UNUSED</a>, <a class="el" href="_tensor_info_8h_source.xhtml#l00263">TensorInfo::data_type()</a>, <a class="el" href="classarm__compute_1_1_i_tensor.xhtml#a8df2a8ec8fcd4258450270f15651b6c9">ITensor::info()</a>, <a class="el" href="namespacearm__compute.xhtml#aefa1d9648995e5eccc693c690e27aa88">string_from_data_type()</a>, and <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a696b031073e74bf2cb98e5ef201d4aa3">UNKNOWN</a>.</p>
+<p>References <a class="el" href="_error_8h_source.xhtml#l00134">ARM_COMPUTE_ERROR_ON_LOC</a>, <a class="el" href="_error_8h_source.xhtml#l00116">ARM_COMPUTE_ERROR_ON_LOC_MSG</a>, <a class="el" href="_error_8h_source.xhtml#l00049">ARM_COMPUTE_UNUSED</a>, <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml#a7cfb31af63202568efef5214acfbf3ba">ITensorInfo::data_type()</a>, <a class="el" href="classarm__compute_1_1_i_tensor.xhtml#a0e95dc1e53c361348314873b168ae237">ITensor::info()</a>, <a class="el" href="namespacearm__compute.xhtml#aefa1d9648995e5eccc693c690e27aa88">string_from_data_type()</a>, and <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a696b031073e74bf2cb98e5ef201d4aa3">UNKNOWN</a>.</p>
-<p>Referenced by <a class="el" href="_validate_8h_source.xhtml#l00259">error_on_data_type_channel_not_in()</a>.</p>
-<div class="fragment"><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <a class="code" href="_error_8h.xhtml#ac90c3bce005225cbaa4a43740917bb58">ARM_COMPUTE_ERROR_ON_LOC</a>(tensor == <span class="keyword">nullptr</span>, <span class="keyword">function</span>, file, line);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <a class="code" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> &&tensor_dt = tensor->info()->data_type();</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(tensor_dt);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <a class="code" href="_error_8h.xhtml#ac90c3bce005225cbaa4a43740917bb58">ARM_COMPUTE_ERROR_ON_LOC</a>(tensor_dt == DataType::UNKNOWN, <span class="keyword">function</span>, file, line);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keyword">const</span> std::array<T, <span class="keyword">sizeof</span>...(Ts)> dts_array{ { std::forward<Ts>(dts)... } };</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(dts_array);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> </div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <a class="code" href="_error_8h.xhtml#a1b62e396a1789909dadda61ea4cda96f">ARM_COMPUTE_ERROR_ON_LOC_MSG</a>(tensor_dt != dt && std::none_of(dts_array.begin(), dts_array.end(), [&](<span class="keyword">const</span> T & d)</div><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="keywordflow">return</span> d == tensor_dt;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  }),</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keyword">function</span>, file, line, <span class="stringliteral">"ITensor data type %s not supported by this kernel"</span>, <a class="code" href="namespacearm__compute.xhtml#aefa1d9648995e5eccc693c690e27aa88">string_from_data_type</a>(tensor_dt).c_str());</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> }</div><div class="ttc" id="_error_8h_xhtml_a1b62e396a1789909dadda61ea4cda96f"><div class="ttname"><a href="_error_8h.xhtml#a1b62e396a1789909dadda61ea4cda96f">ARM_COMPUTE_ERROR_ON_LOC_MSG</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON_LOC_MSG(cond, func, file, line,...)</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00092">Error.h:92</a></div></div>
+<p>Referenced by <a class="el" href="_validate_8h_source.xhtml#l00403">error_on_data_type_channel_not_in()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> {</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <a class="code" href="_error_8h.xhtml#ac90c3bce005225cbaa4a43740917bb58">ARM_COMPUTE_ERROR_ON_LOC</a>(tensor == <span class="keyword">nullptr</span>, <span class="keyword">function</span>, file, line);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> </div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> &tensor_dt = tensor->info()->data_type(); <span class="comment">//NOLINT</span></div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(tensor_dt);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> </div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <a class="code" href="_error_8h.xhtml#ac90c3bce005225cbaa4a43740917bb58">ARM_COMPUTE_ERROR_ON_LOC</a>(tensor_dt == DataType::UNKNOWN, <span class="keyword">function</span>, file, line);</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> </div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <span class="keyword">const</span> std::array<T, <span class="keyword">sizeof</span>...(Ts)> dts_array{ { std::forward<Ts>(dts)... } };</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(dts_array);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span> </div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <a class="code" href="_error_8h.xhtml#a1b62e396a1789909dadda61ea4cda96f">ARM_COMPUTE_ERROR_ON_LOC_MSG</a>(tensor_dt != dt && std::none_of(dts_array.begin(), dts_array.end(), [&](<span class="keyword">const</span> T & d)</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  {</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <span class="keywordflow">return</span> d == tensor_dt;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  }),</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="keyword">function</span>, file, line, <span class="stringliteral">"ITensor data type %s not supported by this kernel"</span>, <a class="code" href="namespacearm__compute.xhtml#aefa1d9648995e5eccc693c690e27aa88">string_from_data_type</a>(tensor_dt).c_str());</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> }</div><div class="ttc" id="_error_8h_xhtml_a1b62e396a1789909dadda61ea4cda96f"><div class="ttname"><a href="_error_8h.xhtml#a1b62e396a1789909dadda61ea4cda96f">ARM_COMPUTE_ERROR_ON_LOC_MSG</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON_LOC_MSG(cond, func, file, line,...)</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00116">Error.h:116</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a4103adbb45806b2f2002d44b91d0d206"><div class="ttname"><a href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a></div><div class="ttdeci">#define ARM_COMPUTE_UNUSED(var)</div><div class="ttdoc">To avoid unused variables warnings. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00049">Error.h:49</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_aefa1d9648995e5eccc693c690e27aa88"><div class="ttname"><a href="namespacearm__compute.xhtml#aefa1d9648995e5eccc693c690e27aa88">arm_compute::string_from_data_type</a></div><div class="ttdeci">const std::string & string_from_data_type(DataType dt)</div><div class="ttdoc">Convert a data type identity into a string. </div></div>
-<div class="ttc" id="_error_8h_xhtml_ac90c3bce005225cbaa4a43740917bb58"><div class="ttname"><a href="_error_8h.xhtml#ac90c3bce005225cbaa4a43740917bb58">ARM_COMPUTE_ERROR_ON_LOC</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON_LOC(cond, func, file, line)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00110">Error.h:110</a></div></div>
-<div class="ttc" id="namespacearm__compute_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6"><div class="ttname"><a href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">arm_compute::DataType</a></div><div class="ttdeci">DataType</div><div class="ttdoc">Available data types. </div><div class="ttdef"><b>Definition:</b> <a href="_types_8h_source.xhtml#l00060">Types.h:60</a></div></div>
+<div class="ttc" id="_error_8h_xhtml_ac90c3bce005225cbaa4a43740917bb58"><div class="ttname"><a href="_error_8h.xhtml#ac90c3bce005225cbaa4a43740917bb58">ARM_COMPUTE_ERROR_ON_LOC</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON_LOC(cond, func, file, line)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00134">Error.h:134</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6"><div class="ttname"><a href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">arm_compute::DataType</a></div><div class="ttdeci">DataType</div><div class="ttdoc">Available data types. </div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_types_8h_source.xhtml#l00060">Types.h:60</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -5643,13 +7060,13 @@
</dd>
</dl>
-<p>Definition at line <a class="el" href="_validate_8h_source.xhtml#l00196">196</a> of file <a class="el" href="_validate_8h_source.xhtml">Validate.h</a>.</p>
+<p>Definition at line <a class="el" href="_validate_8h_source.xhtml#l00340">340</a> of file <a class="el" href="_validate_8h_source.xhtml">Validate.h</a>.</p>
-<p>References <a class="el" href="_error_8h_source.xhtml#l00110">ARM_COMPUTE_ERROR_ON_LOC</a>, <a class="el" href="_error_8h_source.xhtml#l00092">ARM_COMPUTE_ERROR_ON_LOC_MSG</a>, <a class="el" href="_error_8h_source.xhtml#l00049">ARM_COMPUTE_UNUSED</a>, <a class="el" href="namespacearm__compute.xhtml#a9c92c867fc64454545668d87b20979eb">string_from_format()</a>, and <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a696b031073e74bf2cb98e5ef201d4aa3">UNKNOWN</a>.</p>
-<div class="fragment"><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <a class="code" href="_error_8h.xhtml#ac90c3bce005225cbaa4a43740917bb58">ARM_COMPUTE_ERROR_ON_LOC</a>(<span class="keywordtype">object</span> == <span class="keyword">nullptr</span>, <span class="keyword">function</span>, file, line);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58">Format</a> &&object_format = <span class="keywordtype">object</span>->info()->format();</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(object_format);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <a class="code" href="_error_8h.xhtml#ac90c3bce005225cbaa4a43740917bb58">ARM_COMPUTE_ERROR_ON_LOC</a>(object_format == Format::UNKNOWN, <span class="keyword">function</span>, file, line);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> </div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keyword">const</span> std::array<F, <span class="keyword">sizeof</span>...(Fs)> formats_array{ { std::forward<Fs>(formats)... } };</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(formats_array);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <a class="code" href="_error_8h.xhtml#a1b62e396a1789909dadda61ea4cda96f">ARM_COMPUTE_ERROR_ON_LOC_MSG</a>(object_format != format && std::none_of(formats_array.begin(), formats_array.end(), [&](<span class="keyword">const</span> F & f)</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">return</span> f == object_format;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  }),</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keyword">function</span>, file, line, <span class="stringliteral">"Format %s not supported by this kernel"</span>, <a class="code" href="namespacearm__compute.xhtml#a9c92c867fc64454545668d87b20979eb">string_from_format</a>(object_format).c_str());</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> }</div><div class="ttc" id="_error_8h_xhtml_a1b62e396a1789909dadda61ea4cda96f"><div class="ttname"><a href="_error_8h.xhtml#a1b62e396a1789909dadda61ea4cda96f">ARM_COMPUTE_ERROR_ON_LOC_MSG</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON_LOC_MSG(cond, func, file, line,...)</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00092">Error.h:92</a></div></div>
+<p>References <a class="el" href="_error_8h_source.xhtml#l00134">ARM_COMPUTE_ERROR_ON_LOC</a>, <a class="el" href="_error_8h_source.xhtml#l00116">ARM_COMPUTE_ERROR_ON_LOC_MSG</a>, <a class="el" href="_error_8h_source.xhtml#l00049">ARM_COMPUTE_UNUSED</a>, <a class="el" href="namespacearm__compute.xhtml#a9c92c867fc64454545668d87b20979eb">string_from_format()</a>, and <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a696b031073e74bf2cb98e5ef201d4aa3">UNKNOWN</a>.</p>
+<div class="fragment"><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> {</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <a class="code" href="_error_8h.xhtml#ac90c3bce005225cbaa4a43740917bb58">ARM_COMPUTE_ERROR_ON_LOC</a>(<span class="keywordtype">object</span> == <span class="keyword">nullptr</span>, <span class="keyword">function</span>, file, line);</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> </div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58">Format</a> &&object_format = <span class="keywordtype">object</span>->info()->format();</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(object_format);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> </div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <a class="code" href="_error_8h.xhtml#ac90c3bce005225cbaa4a43740917bb58">ARM_COMPUTE_ERROR_ON_LOC</a>(object_format == Format::UNKNOWN, <span class="keyword">function</span>, file, line);</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="keyword">const</span> std::array<F, <span class="keyword">sizeof</span>...(Fs)> formats_array{ { std::forward<Fs>(formats)... } };</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(formats_array);</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>  <a class="code" href="_error_8h.xhtml#a1b62e396a1789909dadda61ea4cda96f">ARM_COMPUTE_ERROR_ON_LOC_MSG</a>(object_format != format && std::none_of(formats_array.begin(), formats_array.end(), [&](<span class="keyword">const</span> F & f)</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  {</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="keywordflow">return</span> f == object_format;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  }),</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="keyword">function</span>, file, line, <span class="stringliteral">"Format %s not supported by this kernel"</span>, <a class="code" href="namespacearm__compute.xhtml#a9c92c867fc64454545668d87b20979eb">string_from_format</a>(object_format).c_str());</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> }</div><div class="ttc" id="_error_8h_xhtml_a1b62e396a1789909dadda61ea4cda96f"><div class="ttname"><a href="_error_8h.xhtml#a1b62e396a1789909dadda61ea4cda96f">ARM_COMPUTE_ERROR_ON_LOC_MSG</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON_LOC_MSG(cond, func, file, line,...)</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00116">Error.h:116</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a4103adbb45806b2f2002d44b91d0d206"><div class="ttname"><a href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a></div><div class="ttdeci">#define ARM_COMPUTE_UNUSED(var)</div><div class="ttdoc">To avoid unused variables warnings. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00049">Error.h:49</a></div></div>
-<div class="ttc" id="namespacearm__compute_xhtml_ab4e88c89b3b7ea1735996cc4def22d58"><div class="ttname"><a href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58">arm_compute::Format</a></div><div class="ttdeci">Format</div><div class="ttdoc">Image colour formats. </div><div class="ttdef"><b>Definition:</b> <a href="_types_8h_source.xhtml#l00038">Types.h:38</a></div></div>
-<div class="ttc" id="_error_8h_xhtml_ac90c3bce005225cbaa4a43740917bb58"><div class="ttname"><a href="_error_8h.xhtml#ac90c3bce005225cbaa4a43740917bb58">ARM_COMPUTE_ERROR_ON_LOC</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON_LOC(cond, func, file, line)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00110">Error.h:110</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_ab4e88c89b3b7ea1735996cc4def22d58"><div class="ttname"><a href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58">arm_compute::Format</a></div><div class="ttdeci">Format</div><div class="ttdoc">Image colour formats. </div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_types_8h_source.xhtml#l00038">Types.h:38</a></div></div>
+<div class="ttc" id="_error_8h_xhtml_ac90c3bce005225cbaa4a43740917bb58"><div class="ttname"><a href="_error_8h.xhtml#ac90c3bce005225cbaa4a43740917bb58">ARM_COMPUTE_ERROR_ON_LOC</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON_LOC(cond, func, file, line)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00134">Error.h:134</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a9c92c867fc64454545668d87b20979eb"><div class="ttname"><a href="namespacearm__compute.xhtml#a9c92c867fc64454545668d87b20979eb">arm_compute::string_from_format</a></div><div class="ttdeci">const std::string & string_from_format(Format format)</div><div class="ttdoc">Convert a tensor format into a string. </div></div>
</div><!-- fragment -->
</div>
@@ -5710,6 +7127,125 @@
</div>
</div>
+<a class="anchor" id="a36ffb104aed50deb360db6f3afa4c394"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void arm_compute::error_on_invalid_subtensor </td>
+ <td>(</td>
+ <td class="paramtype">const char * </td>
+ <td class="paramname"><em>function</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char * </td>
+ <td class="paramname"><em>file</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const int </td>
+ <td class="paramname"><em>line</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> & </td>
+ <td class="paramname"><em>parent_shape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarm__compute_1_1_coordinates.xhtml">Coordinates</a> & </td>
+ <td class="paramname"><em>coords</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> & </td>
+ <td class="paramname"><em>shape</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Throw an error if if the coordinates and shape of the subtensor are within the parent tensor. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">function</td><td>Function in which the error occurred. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">file</td><td>Name of the file where the error occurred. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">line</td><td>Line on which the error occurred. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">parent_shape</td><td>Parent tensor shape </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">coords</td><td><a class="el" href="classarm__compute_1_1_coordinates.xhtml" title="Coordinates of an item. ">Coordinates</a> inside the parent tensor where the first element of the subtensor is </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">shape</td><td>Shape of the subtensor </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a858e835f22c359080a09709c6dd950b1"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void arm_compute::error_on_invalid_subtensor_valid_region </td>
+ <td>(</td>
+ <td class="paramtype">const char * </td>
+ <td class="paramname"><em>function</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char * </td>
+ <td class="paramname"><em>file</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const int </td>
+ <td class="paramname"><em>line</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarm__compute_1_1_valid_region.xhtml">ValidRegion</a> & </td>
+ <td class="paramname"><em>parent_valid_region</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarm__compute_1_1_valid_region.xhtml">ValidRegion</a> & </td>
+ <td class="paramname"><em>valid_region</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Throw an error if the valid region of a subtensor is not inside the valid region of the parent tensor. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">function</td><td>Function in which the error occurred. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">file</td><td>Name of the file where the error occurred. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">line</td><td>Line on which the error occurred. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">parent_valid_region</td><td>Parent valid region. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">valid_region</td><td>Valid region of subtensor. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
<a class="anchor" id="a0916477887763c20822b43be144963eb"></a>
<div class="memitem">
<div class="memproto">
@@ -5833,12 +7369,221 @@
</dd>
</dl>
-<p>Definition at line <a class="el" href="_validate_8h_source.xhtml#l00162">162</a> of file <a class="el" href="_validate_8h_source.xhtml">Validate.h</a>.</p>
+<p>Definition at line <a class="el" href="_validate_8h_source.xhtml#l00257">257</a> of file <a class="el" href="_validate_8h_source.xhtml">Validate.h</a>.</p>
-<p>References <a class="el" href="_error_8h_source.xhtml#l00092">ARM_COMPUTE_ERROR_ON_LOC_MSG</a>, <a class="el" href="_error_8h_source.xhtml#l00049">ARM_COMPUTE_UNUSED</a>, <a class="el" href="_tensor_info_8h_source.xhtml#l00263">TensorInfo::data_type()</a>, and <a class="el" href="classarm__compute_1_1_i_tensor.xhtml#a8df2a8ec8fcd4258450270f15651b6c9">ITensor::info()</a>.</p>
-<div class="fragment"><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(<span class="keyword">function</span>);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(file);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(line);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(tensor_1);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(tensor_2);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <a class="code" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> &&first_data_type = tensor_1->info()->data_type();</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(first_data_type);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keyword">const</span> std::array<<span class="keyword">const</span> ITensor *, <span class="keyword">sizeof</span>...(Ts)> tensors_array{ { std::forward<Ts>(tensors)... } };</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(tensors_array);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <a class="code" href="_error_8h.xhtml#a1b62e396a1789909dadda61ea4cda96f">ARM_COMPUTE_ERROR_ON_LOC_MSG</a>(tensor_2->info()->data_type() != first_data_type || std::any_of(tensors_array.begin(), tensors_array.end(), [&](<span class="keyword">const</span> ITensor * tensor)</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">return</span> tensor->info()->data_type() != first_data_type;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  }),</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keyword">function</span>, file, line, <span class="stringliteral">"Tensors have different data types"</span>);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> }</div><div class="ttc" id="_error_8h_xhtml_a1b62e396a1789909dadda61ea4cda96f"><div class="ttname"><a href="_error_8h.xhtml#a1b62e396a1789909dadda61ea4cda96f">ARM_COMPUTE_ERROR_ON_LOC_MSG</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON_LOC_MSG(cond, func, file, line,...)</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00092">Error.h:92</a></div></div>
+<p>References <a class="el" href="_error_8h_source.xhtml#l00116">ARM_COMPUTE_ERROR_ON_LOC_MSG</a>, <a class="el" href="_error_8h_source.xhtml#l00049">ARM_COMPUTE_UNUSED</a>, <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml#a7cfb31af63202568efef5214acfbf3ba">ITensorInfo::data_type()</a>, and <a class="el" href="classarm__compute_1_1_i_tensor.xhtml#a0e95dc1e53c361348314873b168ae237">ITensor::info()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(<span class="keyword">function</span>);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(file);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(line);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(tensor_1);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(tensor_2);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> </div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <a class="code" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> &&first_data_type = tensor_1->info()->data_type();</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(first_data_type);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> </div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keyword">const</span> std::array<<span class="keyword">const</span> ITensor *, <span class="keyword">sizeof</span>...(Ts)> tensors_array{ { std::forward<Ts>(tensors)... } };</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(tensors_array);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> </div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <a class="code" href="_error_8h.xhtml#a1b62e396a1789909dadda61ea4cda96f">ARM_COMPUTE_ERROR_ON_LOC_MSG</a>(tensor_2->info()->data_type() != first_data_type || std::any_of(tensors_array.begin(), tensors_array.end(), [&](<span class="keyword">const</span> ITensor * tensor)</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">return</span> tensor->info()->data_type() != first_data_type;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  }),</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keyword">function</span>, file, line, <span class="stringliteral">"Tensors have different data types"</span>);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> }</div><div class="ttc" id="_error_8h_xhtml_a1b62e396a1789909dadda61ea4cda96f"><div class="ttname"><a href="_error_8h.xhtml#a1b62e396a1789909dadda61ea4cda96f">ARM_COMPUTE_ERROR_ON_LOC_MSG</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON_LOC_MSG(cond, func, file, line,...)</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00116">Error.h:116</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a4103adbb45806b2f2002d44b91d0d206"><div class="ttname"><a href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a></div><div class="ttdeci">#define ARM_COMPUTE_UNUSED(var)</div><div class="ttdoc">To avoid unused variables warnings. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00049">Error.h:49</a></div></div>
-<div class="ttc" id="namespacearm__compute_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6"><div class="ttname"><a href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">arm_compute::DataType</a></div><div class="ttdeci">DataType</div><div class="ttdoc">Available data types. </div><div class="ttdef"><b>Definition:</b> <a href="_types_8h_source.xhtml#l00060">Types.h:60</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6"><div class="ttname"><a href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">arm_compute::DataType</a></div><div class="ttdeci">DataType</div><div class="ttdoc">Available data types. </div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_types_8h_source.xhtml#l00060">Types.h:60</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="aff062b84c57c614a2de4d54db2cbc31c"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void arm_compute::error_on_mismatching_dimensions </td>
+ <td>(</td>
+ <td class="paramtype">const char * </td>
+ <td class="paramname"><em>function</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char * </td>
+ <td class="paramname"><em>file</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>line</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarm__compute_1_1_dimensions.xhtml">Dimensions</a>< T > & </td>
+ <td class="paramname"><em>dim1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarm__compute_1_1_dimensions.xhtml">Dimensions</a>< T > & </td>
+ <td class="paramname"><em>dim2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">Ts &&... </td>
+ <td class="paramname"><em>dims</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Throw an error if the passed dimension objects differ. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">function</td><td>Function in which the error occurred. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">file</td><td>Name of the file where the error occurred. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">line</td><td>Line on which the error occurred. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">dim1</td><td>The first object to be compared. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">dim2</td><td>The second object to be compared. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">dims</td><td>(Optional) Further allowed objects. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="_validate_8h_source.xhtml#l00188">188</a> of file <a class="el" href="_validate_8h_source.xhtml">Validate.h</a>.</p>
+
+<p>References <a class="el" href="_error_8h_source.xhtml#l00049">ARM_COMPUTE_UNUSED</a>, and <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml#l00200">for_each()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(<span class="keyword">function</span>);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(file);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(line);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> </div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <a class="code" href="namespacearm__compute.xhtml#a76e58198af8e930a851637e7e3eccbd2">for_each</a>(detail::compare_dimension<T>(dim1, <span class="keyword">function</span>, file, line), dim2, std::forward<Ts>(dims)...);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> }</div><div class="ttc" id="_error_8h_xhtml_a4103adbb45806b2f2002d44b91d0d206"><div class="ttname"><a href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a></div><div class="ttdeci">#define ARM_COMPUTE_UNUSED(var)</div><div class="ttdoc">To avoid unused variables warnings. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00049">Error.h:49</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a76e58198af8e930a851637e7e3eccbd2"><div class="ttname"><a href="namespacearm__compute.xhtml#a76e58198af8e930a851637e7e3eccbd2">arm_compute::for_each</a></div><div class="ttdeci">void for_each(F &&)</div><div class="ttdoc">Base case of for_each. </div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_helpers_8h_source.xhtml#l00200">Helpers.h:200</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a526ed43a37ba0faf2c1789175ec1a350"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void arm_compute::error_on_mismatching_fixed_point </td>
+ <td>(</td>
+ <td class="paramtype">const char * </td>
+ <td class="paramname"><em>function</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char * </td>
+ <td class="paramname"><em>file</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const int </td>
+ <td class="paramname"><em>line</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarm__compute_1_1_i_tensor.xhtml">ITensor</a> * </td>
+ <td class="paramname"><em>tensor_1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarm__compute_1_1_i_tensor.xhtml">ITensor</a> * </td>
+ <td class="paramname"><em>tensor_2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">Ts... </td>
+ <td class="paramname"><em>tensors</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Throw an error if the passed tensors have different fixed point data types or different fixed point positions. </p>
+<dl class="section note"><dt>Note</dt><dd>: If the first tensor doesn't have fixed point data type, the function returns without throwing an error</dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">function</td><td>Function in which the error occurred. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">file</td><td>Name of the file where the error occurred. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">line</td><td>Line on which the error occurred. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">tensor_1</td><td>The first tensor to be compared. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">tensor_2</td><td>The second tensor to be compared. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">tensors</td><td>(Optional) Further allowed tensors. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="_validate_8h_source.xhtml#l00293">293</a> of file <a class="el" href="_validate_8h_source.xhtml">Validate.h</a>.</p>
+
+<p>References <a class="el" href="_error_8h_source.xhtml#l00116">ARM_COMPUTE_ERROR_ON_LOC_MSG</a>, <a class="el" href="_error_8h_source.xhtml#l00049">ARM_COMPUTE_UNUSED</a>, <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml#a7cfb31af63202568efef5214acfbf3ba">ITensorInfo::data_type()</a>, <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml#ab21a362740e892b6e913bd8db03b0e67">ITensorInfo::fixed_point_position()</a>, <a class="el" href="classarm__compute_1_1_i_tensor.xhtml#a0e95dc1e53c361348314873b168ae237">ITensor::info()</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a48d877702a2957f5a932c43a357866f9">QS16</a>, and <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a11cde4d3551db3f9498d339a67189543">QS8</a>.</p>
+<div class="fragment"><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(<span class="keyword">function</span>);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(file);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(line);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(tensor_1);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(tensor_2);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> </div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <a class="code" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> &&first_data_type = tensor_1->info()->data_type();</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> first_fixed_point_position = tensor_1->info()->fixed_point_position();</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(first_data_type);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(first_fixed_point_position);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordflow">if</span>((first_data_type != DataType::QS8) && (first_data_type != DataType::QS16))</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  }</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span> </div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keyword">const</span> std::array < <span class="keyword">const</span> ITensor *, 1 + <span class="keyword">sizeof</span>...(Ts) > tensors_array{ { tensor_2, std::forward<Ts>(tensors)... } };</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(tensors_array);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> </div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <a class="code" href="_error_8h.xhtml#a1b62e396a1789909dadda61ea4cda96f">ARM_COMPUTE_ERROR_ON_LOC_MSG</a>(std::any_of(tensors_array.begin(), tensors_array.end(), [&](<span class="keyword">const</span> ITensor * tensor)</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  {</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keywordflow">return</span> tensor->info()->data_type() != first_data_type;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  }),</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keyword">function</span>, file, line, <span class="stringliteral">"Tensors have different fixed point data types"</span>);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> </div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <a class="code" href="_error_8h.xhtml#a1b62e396a1789909dadda61ea4cda96f">ARM_COMPUTE_ERROR_ON_LOC_MSG</a>(std::any_of(tensors_array.begin(), tensors_array.end(), [&](<span class="keyword">const</span> ITensor * tensor)</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">return</span> tensor->info()->fixed_point_position() != first_fixed_point_position;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  }),</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keyword">function</span>, file, line, <span class="stringliteral">"Tensors have different fixed point positions"</span>);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> }</div><div class="ttc" id="_error_8h_xhtml_a1b62e396a1789909dadda61ea4cda96f"><div class="ttname"><a href="_error_8h.xhtml#a1b62e396a1789909dadda61ea4cda96f">ARM_COMPUTE_ERROR_ON_LOC_MSG</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON_LOC_MSG(cond, func, file, line,...)</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00116">Error.h:116</a></div></div>
+<div class="ttc" id="_error_8h_xhtml_a4103adbb45806b2f2002d44b91d0d206"><div class="ttname"><a href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a></div><div class="ttdeci">#define ARM_COMPUTE_UNUSED(var)</div><div class="ttdoc">To avoid unused variables warnings. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00049">Error.h:49</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6"><div class="ttname"><a href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">arm_compute::DataType</a></div><div class="ttdeci">DataType</div><div class="ttdoc">Available data types. </div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_types_8h_source.xhtml#l00060">Types.h:60</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a064db352a2f4153e6237054343d5fe7a"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void arm_compute::error_on_mismatching_fixed_point_position </td>
+ <td>(</td>
+ <td class="paramtype">const char * </td>
+ <td class="paramname"><em>function</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char * </td>
+ <td class="paramname"><em>file</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const int </td>
+ <td class="paramname"><em>line</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarm__compute_1_1_i_tensor.xhtml">ITensor</a> * </td>
+ <td class="paramname"><em>tensor_1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarm__compute_1_1_i_tensor.xhtml">ITensor</a> * </td>
+ <td class="paramname"><em>tensor_2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">Ts... </td>
+ <td class="paramname"><em>tensors</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Throw an error if the input fixed-point positions are different. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">function</td><td>Function in which the error occurred. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">file</td><td>Name of the file where the error occurred. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">line</td><td>Line on which the error occurred. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">tensor_1</td><td>The first tensor to be compared. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">tensor_2</td><td>The second tensor to be compared. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">tensors</td><td>(Optional) Further allowed tensors. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="_validate_8h_source.xhtml#l00526">526</a> of file <a class="el" href="_validate_8h_source.xhtml">Validate.h</a>.</p>
+
+<p>References <a class="el" href="_error_8h_source.xhtml#l00116">ARM_COMPUTE_ERROR_ON_LOC_MSG</a>, <a class="el" href="_error_8h_source.xhtml#l00049">ARM_COMPUTE_UNUSED</a>, <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml#ab21a362740e892b6e913bd8db03b0e67">ITensorInfo::fixed_point_position()</a>, and <a class="el" href="classarm__compute_1_1_i_tensor.xhtml#a0e95dc1e53c361348314873b168ae237">ITensor::info()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00528"></a><span class="lineno"> 528</span> {</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  <span class="keyword">const</span> std::array < <span class="keyword">const</span> ITensor *, 1 + <span class="keyword">sizeof</span>...(Ts) > tensors_array{ { tensor_2, std::forward<Ts>(tensors)... } };</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(tensors_array);</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span> </div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <a class="code" href="_error_8h.xhtml#a1b62e396a1789909dadda61ea4cda96f">ARM_COMPUTE_ERROR_ON_LOC_MSG</a>(std::any_of(tensors_array.begin(), tensors_array.end(), [&](<span class="keyword">const</span> ITensor * tensor)</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  {</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <span class="keywordflow">return</span> tensor->info()->fixed_point_position() != tensor_1->info()->fixed_point_position();</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  }),</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="keyword">function</span>, file, line, <span class="stringliteral">"Tensors have different fixed-point positions"</span>);</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span> }</div><div class="ttc" id="_error_8h_xhtml_a1b62e396a1789909dadda61ea4cda96f"><div class="ttname"><a href="_error_8h.xhtml#a1b62e396a1789909dadda61ea4cda96f">ARM_COMPUTE_ERROR_ON_LOC_MSG</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON_LOC_MSG(cond, func, file, line,...)</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00116">Error.h:116</a></div></div>
+<div class="ttc" id="_error_8h_xhtml_a4103adbb45806b2f2002d44b91d0d206"><div class="ttname"><a href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a></div><div class="ttdeci">#define ARM_COMPUTE_UNUSED(var)</div><div class="ttdoc">To avoid unused variables warnings. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00049">Error.h:49</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -5890,7 +7635,7 @@
</table>
</div><div class="memdoc">
-<p>Throw an error if the passed two tensors have different shapes. </p>
+<p>Throw an error if the passed two tensors have different shapes from the given dimension. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">function</td><td>Function in which the error occurred. </td></tr>
@@ -5903,12 +7648,88 @@
</dd>
</dl>
-<p>Definition at line <a class="el" href="_validate_8h_source.xhtml#l00132">132</a> of file <a class="el" href="_validate_8h_source.xhtml">Validate.h</a>.</p>
+<p>Definition at line <a class="el" href="_validate_8h_source.xhtml#l00209">209</a> of file <a class="el" href="_validate_8h_source.xhtml">Validate.h</a>.</p>
-<p>References <a class="el" href="_error_8h_source.xhtml#l00092">ARM_COMPUTE_ERROR_ON_LOC_MSG</a>, <a class="el" href="_error_8h_source.xhtml#l00049">ARM_COMPUTE_UNUSED</a>, and <a class="el" href="_validate_8h_source.xhtml#l00109">have_different_shapes()</a>.</p>
-<div class="fragment"><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(<span class="keyword">function</span>);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(file);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(line);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(tensor_1);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(tensor_2);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keyword">const</span> std::array<<span class="keyword">const</span> ITensor *, <span class="keyword">sizeof</span>...(Ts)> tensors_array{ { std::forward<Ts>(tensors)... } };</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(tensors_array);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <a class="code" href="_error_8h.xhtml#a1b62e396a1789909dadda61ea4cda96f">ARM_COMPUTE_ERROR_ON_LOC_MSG</a>(<a class="code" href="namespacearm__compute.xhtml#a98c979818eae59f104fcaf8de723aeda">have_different_shapes</a>(tensor_1, tensor_2) || std::any_of(tensors_array.begin(), tensors_array.end(), [&](<span class="keyword">const</span> ITensor * tensor)</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  {</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute.xhtml#a98c979818eae59f104fcaf8de723aeda">have_different_shapes</a>(tensor_1, tensor);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  }),</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keyword">function</span>, file, line, <span class="stringliteral">"Tensors have different shapes"</span>);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> }</div><div class="ttc" id="_error_8h_xhtml_a1b62e396a1789909dadda61ea4cda96f"><div class="ttname"><a href="_error_8h.xhtml#a1b62e396a1789909dadda61ea4cda96f">ARM_COMPUTE_ERROR_ON_LOC_MSG</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON_LOC_MSG(cond, func, file, line,...)</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00092">Error.h:92</a></div></div>
-<div class="ttc" id="namespacearm__compute_xhtml_a98c979818eae59f104fcaf8de723aeda"><div class="ttname"><a href="namespacearm__compute.xhtml#a98c979818eae59f104fcaf8de723aeda">arm_compute::have_different_shapes</a></div><div class="ttdeci">bool have_different_shapes(const ITensor *tensor_1, const ITensor *tensor_2)</div><div class="ttdef"><b>Definition:</b> <a href="_validate_8h_source.xhtml#l00109">Validate.h:109</a></div></div>
+<p>References <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa4c614360da93c0a041b22e537de151eb">U</a>.</p>
+<div class="fragment"><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <a class="code" href="namespacearm__compute.xhtml#a496e03102bca40f666c12a575d4a6157">error_on_mismatching_shapes</a>(<span class="keyword">function</span>, file, line, 0U, tensor_1, tensor_2, std::forward<Ts>(tensors)...);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a496e03102bca40f666c12a575d4a6157"><div class="ttname"><a href="namespacearm__compute.xhtml#a496e03102bca40f666c12a575d4a6157">arm_compute::error_on_mismatching_shapes</a></div><div class="ttdeci">void error_on_mismatching_shapes(const char *function, const char *file, const int line, unsigned int upper_dim, const ITensor *tensor_1, const ITensor *tensor_2, Ts...tensors)</div><div class="ttdoc">Throw an error if the passed two tensors have different shapes from the given dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_validate_8h_source.xhtml#l00226">Validate.h:226</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a496e03102bca40f666c12a575d4a6157"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void arm_compute::error_on_mismatching_shapes </td>
+ <td>(</td>
+ <td class="paramtype">const char * </td>
+ <td class="paramname"><em>function</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char * </td>
+ <td class="paramname"><em>file</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const int </td>
+ <td class="paramname"><em>line</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int </td>
+ <td class="paramname"><em>upper_dim</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarm__compute_1_1_i_tensor.xhtml">ITensor</a> * </td>
+ <td class="paramname"><em>tensor_1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarm__compute_1_1_i_tensor.xhtml">ITensor</a> * </td>
+ <td class="paramname"><em>tensor_2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">Ts... </td>
+ <td class="paramname"><em>tensors</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Throw an error if the passed two tensors have different shapes from the given dimension. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">function</td><td>Function in which the error occurred. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">file</td><td>Name of the file where the error occurred. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">line</td><td>Line on which the error occurred. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">upper_dim</td><td>The dimension from which to check. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">tensor_1</td><td>The first tensor to be compared. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">tensor_2</td><td>The second tensor to be compared. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">tensors</td><td>(Optional) Further allowed tensors. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="_validate_8h_source.xhtml#l00226">226</a> of file <a class="el" href="_validate_8h_source.xhtml">Validate.h</a>.</p>
+
+<p>References <a class="el" href="_error_8h_source.xhtml#l00134">ARM_COMPUTE_ERROR_ON_LOC</a>, <a class="el" href="_error_8h_source.xhtml#l00116">ARM_COMPUTE_ERROR_ON_LOC_MSG</a>, <a class="el" href="_error_8h_source.xhtml#l00049">ARM_COMPUTE_UNUSED</a>, and <a class="el" href="_validate_8h_source.xhtml#l00051">arm_compute::detail::have_different_dimensions()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> {</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(<span class="keyword">function</span>);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(file);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(line);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> </div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keyword">const</span> std::array < <span class="keyword">const</span> ITensor *, 2 + <span class="keyword">sizeof</span>...(Ts) > tensors_array{ { tensor_1, tensor_2, std::forward<Ts>(tensors)... } };</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(tensors_array);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <a class="code" href="_error_8h.xhtml#ac90c3bce005225cbaa4a43740917bb58">ARM_COMPUTE_ERROR_ON_LOC</a>(tensors_array.cbegin() == <span class="keyword">nullptr</span>, <span class="keyword">function</span>, file, line);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <a class="code" href="_error_8h.xhtml#a1b62e396a1789909dadda61ea4cda96f">ARM_COMPUTE_ERROR_ON_LOC_MSG</a>(std::any_of(std::next(tensors_array.cbegin()), tensors_array.cend(), [&](<span class="keyword">const</span> ITensor * tensor)</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  {</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <a class="code" href="_error_8h.xhtml#ac90c3bce005225cbaa4a43740917bb58">ARM_COMPUTE_ERROR_ON_LOC</a>(tensor == <span class="keyword">nullptr</span>, <span class="keyword">function</span>, file, line);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1detail.xhtml#a45d610a8bc262f7007c934293361e888">detail::have_different_dimensions</a>((*tensors_array.cbegin())->info()->tensor_shape(), tensor->info()->tensor_shape(), upper_dim);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  }),</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keyword">function</span>, file, line, <span class="stringliteral">"Tensors have different shapes"</span>);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> }</div><div class="ttc" id="_error_8h_xhtml_a1b62e396a1789909dadda61ea4cda96f"><div class="ttname"><a href="_error_8h.xhtml#a1b62e396a1789909dadda61ea4cda96f">ARM_COMPUTE_ERROR_ON_LOC_MSG</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON_LOC_MSG(cond, func, file, line,...)</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00116">Error.h:116</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a4103adbb45806b2f2002d44b91d0d206"><div class="ttname"><a href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a></div><div class="ttdeci">#define ARM_COMPUTE_UNUSED(var)</div><div class="ttdoc">To avoid unused variables warnings. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00049">Error.h:49</a></div></div>
+<div class="ttc" id="namespacearm__compute_1_1detail_xhtml_a45d610a8bc262f7007c934293361e888"><div class="ttname"><a href="namespacearm__compute_1_1detail.xhtml#a45d610a8bc262f7007c934293361e888">arm_compute::detail::have_different_dimensions</a></div><div class="ttdeci">bool have_different_dimensions(const Dimensions< T > &dim1, const Dimensions< T > &dim2, unsigned int upper_dim)</div><div class="ttdef"><b>Definition:</b> <a href="_validate_8h_source.xhtml#l00051">Validate.h:51</a></div></div>
+<div class="ttc" id="_error_8h_xhtml_ac90c3bce005225cbaa4a43740917bb58"><div class="ttname"><a href="_error_8h.xhtml#ac90c3bce005225cbaa4a43740917bb58">ARM_COMPUTE_ERROR_ON_LOC</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON_LOC(cond, func, file, line)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00134">Error.h:134</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -5974,6 +7795,61 @@
</div>
</div>
+<a class="anchor" id="a078507835115009a81ee2974d6073bb9"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void arm_compute::error_on_nullptr </td>
+ <td>(</td>
+ <td class="paramtype">const char * </td>
+ <td class="paramname"><em>function</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char * </td>
+ <td class="paramname"><em>file</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const int </td>
+ <td class="paramname"><em>line</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">Ts &&... </td>
+ <td class="paramname"><em>pointers</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Throw an error if one of the pointers is a nullptr. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">function</td><td>Function in which the error occurred. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">file</td><td>Name of the file where the error occurred. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">line</td><td>Line on which the error occurred. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">pointers</td><td>Pointers to check against nullptr. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="_validate_8h_source.xhtml#l00105">105</a> of file <a class="el" href="_validate_8h_source.xhtml">Validate.h</a>.</p>
+
+<p>References <a class="el" href="_error_8h_source.xhtml#l00134">ARM_COMPUTE_ERROR_ON_LOC</a>, and <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml#l00200">for_each()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keyword">auto</span> is_nullptr = [&](<span class="keyword">const</span> <span class="keywordtype">void</span> *ptr)</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <a class="code" href="_error_8h.xhtml#ac90c3bce005225cbaa4a43740917bb58">ARM_COMPUTE_ERROR_ON_LOC</a>(ptr == <span class="keyword">nullptr</span>, <span class="keyword">function</span>, file, line);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  };</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <a class="code" href="namespacearm__compute.xhtml#a76e58198af8e930a851637e7e3eccbd2">for_each</a>(is_nullptr, std::forward<Ts>(pointers)...);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a76e58198af8e930a851637e7e3eccbd2"><div class="ttname"><a href="namespacearm__compute.xhtml#a76e58198af8e930a851637e7e3eccbd2">arm_compute::for_each</a></div><div class="ttdeci">void for_each(F &&)</div><div class="ttdoc">Base case of for_each. </div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_helpers_8h_source.xhtml#l00200">Helpers.h:200</a></div></div>
+<div class="ttc" id="_error_8h_xhtml_ac90c3bce005225cbaa4a43740917bb58"><div class="ttname"><a href="_error_8h.xhtml#ac90c3bce005225cbaa4a43740917bb58">ARM_COMPUTE_ERROR_ON_LOC</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON_LOC(cond, func, file, line)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00134">Error.h:134</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
<a class="anchor" id="a65c8e0610dff27ecf1ef30214f08d19e"></a>
<div class="memitem">
<div class="memproto">
@@ -6072,6 +7948,71 @@
</div>
</div>
+<a class="anchor" id="a9afdaa4d8bbb78938110ada1daf87f8b"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void arm_compute::error_on_value_not_representable_in_fixed_point </td>
+ <td>(</td>
+ <td class="paramtype">const char * </td>
+ <td class="paramname"><em>function</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char * </td>
+ <td class="paramname"><em>file</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>line</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float </td>
+ <td class="paramname"><em>value</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarm__compute_1_1_i_tensor.xhtml">ITensor</a> * </td>
+ <td class="paramname"><em>tensor</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Throw an error if the fixed-point value is not representable in the specified Q format. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">function</td><td>Function in which the error occurred. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">file</td><td>Name of the file where the error occurred. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">line</td><td>Line on which the error occurred. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>The floating point value to be checked. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">tensor</td><td>Input tensor that has information on data type and fixed-point position. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="_validate_8h_source.xhtml#l00549">549</a> of file <a class="el" href="_validate_8h_source.xhtml">Validate.h</a>.</p>
+
+<p>References <a class="el" href="_error_8h_source.xhtml#l00116">ARM_COMPUTE_ERROR_ON_LOC_MSG</a>, <a class="el" href="_error_8h_source.xhtml#l00049">ARM_COMPUTE_UNUSED</a>, <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml#a7cfb31af63202568efef5214acfbf3ba">ITensorInfo::data_type()</a>, <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00172">element_size_from_data_type()</a>, <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml#ab21a362740e892b6e913bd8db03b0e67">ITensorInfo::fixed_point_position()</a>, <a class="el" href="classarm__compute_1_1_i_tensor.xhtml#a0e95dc1e53c361348314873b168ae237">ITensor::info()</a>, and <a class="el" href="namespacearm__compute.xhtml#aefa1d9648995e5eccc693c690e27aa88">string_from_data_type()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00551"></a><span class="lineno"> 551</span> {</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> fixed_point_position = tensor->info()->fixed_point_position();</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dt = tensor->info()->data_type();</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> q_max_range = 0xFFFFFFFFu >> (((<span class="keyword">sizeof</span>(<span class="keywordtype">unsigned</span> int) - <a class="code" href="namespacearm__compute.xhtml#a34b06c0cd94808a77b697e79880b84b0">element_size_from_data_type</a>(dt)) * 8) + 1);</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  <span class="keyword">const</span> <span class="keywordtype">float</span> max_range = q_max_range / (<span class="keyword">static_cast<</span><span class="keywordtype">float</span><span class="keyword">></span>(1 << fixed_point_position));</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <a class="code" href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(max_range);</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span> </div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <a class="code" href="_error_8h.xhtml#a1b62e396a1789909dadda61ea4cda96f">ARM_COMPUTE_ERROR_ON_LOC_MSG</a>(value > max_range, <span class="keyword">function</span>, file, line,</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="stringliteral">"Value %f is not representable in %s with fixed-point position %d"</span>, value, <a class="code" href="namespacearm__compute.xhtml#aefa1d9648995e5eccc693c690e27aa88">string_from_data_type</a>(dt).c_str(), fixed_point_position);</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span> }</div><div class="ttc" id="_error_8h_xhtml_a1b62e396a1789909dadda61ea4cda96f"><div class="ttname"><a href="_error_8h.xhtml#a1b62e396a1789909dadda61ea4cda96f">ARM_COMPUTE_ERROR_ON_LOC_MSG</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON_LOC_MSG(cond, func, file, line,...)</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00116">Error.h:116</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a34b06c0cd94808a77b697e79880b84b0"><div class="ttname"><a href="namespacearm__compute.xhtml#a34b06c0cd94808a77b697e79880b84b0">arm_compute::element_size_from_data_type</a></div><div class="ttdeci">size_t element_size_from_data_type(DataType dt)</div><div class="ttdoc">The size in bytes of the data type. </div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_utils_8h_source.xhtml#l00172">Utils.h:172</a></div></div>
+<div class="ttc" id="_error_8h_xhtml_a4103adbb45806b2f2002d44b91d0d206"><div class="ttname"><a href="_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a></div><div class="ttdeci">#define ARM_COMPUTE_UNUSED(var)</div><div class="ttdoc">To avoid unused variables warnings. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00049">Error.h:49</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_aefa1d9648995e5eccc693c690e27aa88"><div class="ttname"><a href="namespacearm__compute.xhtml#aefa1d9648995e5eccc693c690e27aa88">arm_compute::string_from_data_type</a></div><div class="ttdeci">const std::string & string_from_data_type(DataType dt)</div><div class="ttdoc">Convert a data type identity into a string. </div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6"><div class="ttname"><a href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">arm_compute::DataType</a></div><div class="ttdeci">DataType</div><div class="ttdoc">Available data types. </div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_types_8h_source.xhtml#l00060">Types.h:60</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
<a class="anchor" id="a6fed5543ae383442a51362e6607c4e65"></a>
<div class="memitem">
<div class="memproto">
@@ -6129,7 +8070,7 @@
</div>
</div>
-<a class="anchor" id="a78fd1c0056e9add7ab01b8e118c0038d"></a>
+<a class="anchor" id="a6c0dcc38187027dcb89cd9724bc5a823"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
@@ -6137,7 +8078,7 @@
<td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname">void arm_compute::execute_window_loop </td>
+ <td class="memname">void execute_window_loop </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_window.xhtml">Window</a> & </td>
<td class="paramname"><em>w</em>, </td>
@@ -6178,8 +8119,12 @@
</dd>
</dl>
-<p>Referenced by <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00550">colorconvert_iyuv_to_nv12()</a>, <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00445">colorconvert_iyuv_to_rgb()</a>, <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00737">colorconvert_iyuv_to_yuv4()</a>, <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00591">colorconvert_nv12_to_iyuv()</a>, <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00389">colorconvert_nv12_to_rgb()</a>, <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00686">colorconvert_nv12_to_yuv4()</a>, <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00825">colorconvert_rgb_to_iyuv()</a>, <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00789">colorconvert_rgb_to_nv12()</a>, <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00303">colorconvert_rgb_to_rgbx()</a>, <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00862">colorconvert_rgb_to_yuv4()</a>, <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00327">colorconvert_rgbx_to_rgb()</a>, <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00633">colorconvert_yuyv_to_iyuv()</a>, <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00502">colorconvert_yuyv_to_nv12()</a>, <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00351">colorconvert_yuyv_to_rgb()</a>, <a class="el" href="test__helpers_2_utils_8h_source.xhtml#l00140">PPMLoader::fill_image()</a>, <a class="el" href="neon__copy__objects_8cpp_source.xhtml#l00035">main_neon_copy_objects()</a>, and <a class="el" href="test__helpers_2_utils_8h_source.xhtml#l00243">test_helpers::save_to_ppm()</a>.</p>
+<p>Definition at line <a class="el" href="_helpers_8inl_source.xhtml#l00176">176</a> of file <a class="el" href="_helpers_8inl_source.xhtml">Helpers.inl</a>.</p>
+<p>References <a class="el" href="_window_8inl_source.xhtml#l00083">Window::validate()</a>.</p>
+
+<p>Referenced by <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00550">colorconvert_iyuv_to_nv12()</a>, <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00445">colorconvert_iyuv_to_rgb()</a>, <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00737">colorconvert_iyuv_to_yuv4()</a>, <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00591">colorconvert_nv12_to_iyuv()</a>, <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00389">colorconvert_nv12_to_rgb()</a>, <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00686">colorconvert_nv12_to_yuv4()</a>, <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00825">colorconvert_rgb_to_iyuv()</a>, <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00789">colorconvert_rgb_to_nv12()</a>, <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00303">colorconvert_rgb_to_rgbx()</a>, <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00862">colorconvert_rgb_to_yuv4()</a>, <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00327">colorconvert_rgbx_to_rgb()</a>, <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00633">colorconvert_yuyv_to_iyuv()</a>, <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00502">colorconvert_yuyv_to_nv12()</a>, <a class="el" href="_n_e_color_convert_helper_8inl_source.xhtml#l00351">colorconvert_yuyv_to_rgb()</a>, <a class="el" href="_tensor_library_8h_source.xhtml#l00368">TensorLibrary::fill()</a>, <a class="el" href="utils_2_utils_8h_source.xhtml#l00142">PPMLoader::fill_image()</a>, <a class="el" href="_tensor_library_8h_source.xhtml#l00621">TensorLibrary::fill_layer_data()</a>, <a class="el" href="model__objects_2_le_net5_8h_source.xhtml#l00150">LeNet5< TensorType, Accessor, ActivationLayerFunction, ConvolutionLayerFunction, FullyConnectedLayerFunction, PoolingLayerFunction, SoftmaxLayerFunction >::get_classifications()</a>, <a class="el" href="model__objects_2_alex_net_8h_source.xhtml#l00374">AlexNet< ITensorType, TensorType, SubTensorType, Accessor, ActivationLayerFunction, ConvolutionLayerFunction, FullyConnectedLayerFunction, NormalizationLayerFunction, PoolingLayerFunction, SoftmaxLayerFunction, dt >::get_classifications()</a>, <a class="el" href="neon__copy__objects_8cpp_source.xhtml#l00035">main_neon_copy_objects()</a>, and <a class="el" href="utils_2_utils_8h_source.xhtml#l00245">arm_compute::utils::save_to_ppm()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  w.validate();</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  Coordinates id;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  ForEachDimension<Coordinates::num_max_dimensions>::unroll(w, <span class="keywordtype">id</span>, std::forward<L>(lambda_function), std::forward<Ts>(iterators)...);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> }</div></div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a6959e681668a37a9242d2aae4e8b4375"></a>
@@ -6217,13 +8162,275 @@
<p>Computes the largest number smaller or equal to value that is a multiple of divisor. </p>
-<p>Definition at line <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00050">50</a> of file <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml">Utils.h</a>.</p>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00051">51</a> of file <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml">Utils.h</a>.</p>
-<p>References <a class="el" href="_error_8h_source.xhtml#l00100">ARM_COMPUTE_ERROR_ON</a>.</p>
-<div class="fragment"><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(value < 0 || divisor <= 0);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">return</span> (value / divisor) * divisor;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> }</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00100">Error.h:100</a></div></div>
+<p>References <a class="el" href="_error_8h_source.xhtml#l00124">ARM_COMPUTE_ERROR_ON</a>.</p>
+<div class="fragment"><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(value < 0 || divisor <= 0);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">return</span> (value / divisor) * divisor;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> }</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00124">Error.h:124</a></div></div>
</div><!-- fragment -->
</div>
</div>
+<a class="anchor" id="a6905c41fd996c479e46791ef58e440aa"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">T arm_compute::foldl </td>
+ <td>(</td>
+ <td class="paramtype">F && </td>
+ <td class="paramname">, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const T & </td>
+ <td class="paramname"><em>value</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Base case of foldl. </p>
+<dl class="section return"><dt>Returns</dt><dd>value. </dd></dl>
+
+<p>Definition at line <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml#l00222">222</a> of file <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml">Helpers.h</a>.</p>
+
+<p>Referenced by <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml#l00245">foldl()</a>, and <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml#l00395">intersect_valid_regions()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">return</span> value;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a7f8e5c5fc77465cf3ac58b3d15305a5f"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">auto arm_compute::foldl </td>
+ <td>(</td>
+ <td class="paramtype">F && </td>
+ <td class="paramname"><em>func</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">T && </td>
+ <td class="paramname"><em>value1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">U && </td>
+ <td class="paramname"><em>value2</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td> -> decltype(func(value1, value2))
+</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Base case of foldl. </p>
+<dl class="section return"><dt>Returns</dt><dd>Function evaluation for value1 and value2 </dd></dl>
+
+<p>Definition at line <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml#l00232">232</a> of file <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml">Helpers.h</a>.</p>
+<div class="fragment"><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> {</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">return</span> func(value1, value2);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a05d0de315da2ecf1fa7d22ffad49b254"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">I arm_compute::foldl </td>
+ <td>(</td>
+ <td class="paramtype">F && </td>
+ <td class="paramname"><em>func</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">I && </td>
+ <td class="paramname"><em>initial</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">T && </td>
+ <td class="paramname"><em>value</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">Vs &&... </td>
+ <td class="paramname"><em>values</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Fold left. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">func</td><td>Function to be called </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">initial</td><td>Initial value </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>Argument passed to the function </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">values</td><td>Remaining arguments </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml#l00245">245</a> of file <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml">Helpers.h</a>.</p>
+
+<p>References <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml#l00222">foldl()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> {</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute.xhtml#a05d0de315da2ecf1fa7d22ffad49b254">foldl</a>(std::forward<F>(func), func(std::forward<I>(initial), std::forward<T>(value)), std::forward<Vs>(values)...);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a05d0de315da2ecf1fa7d22ffad49b254"><div class="ttname"><a href="namespacearm__compute.xhtml#a05d0de315da2ecf1fa7d22ffad49b254">arm_compute::foldl</a></div><div class="ttdeci">I foldl(F &&func, I &&initial, T &&value, Vs &&...values)</div><div class="ttdoc">Fold left. </div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_helpers_8h_source.xhtml#l00245">Helpers.h:245</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a76e58198af8e930a851637e7e3eccbd2"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void arm_compute::for_each </td>
+ <td>(</td>
+ <td class="paramtype">F && </td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Base case of for_each. </p>
+<p>Does nothing. </p>
+
+<p>Definition at line <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml#l00200">200</a> of file <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml">Helpers.h</a>.</p>
+
+<p>Referenced by <a class="el" href="_validate_8h_source.xhtml#l00188">error_on_mismatching_dimensions()</a>, <a class="el" href="_validate_8h_source.xhtml#l00105">error_on_nullptr()</a>, <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml#l00211">for_each()</a>, and <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml#l00335">update_window_and_padding()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="ab951ff3c9484cd4b243344b3a0f12d95"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void arm_compute::for_each </td>
+ <td>(</td>
+ <td class="paramtype">F && </td>
+ <td class="paramname"><em>func</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">T && </td>
+ <td class="paramname"><em>arg</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">Ts &&... </td>
+ <td class="paramname"><em>args</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Call the function for each of the arguments. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">func</td><td>Function to be called </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">arg</td><td>Argument passed to the function </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">args</td><td>Remaining arguments </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml#l00211">211</a> of file <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml">Helpers.h</a>.</p>
+
+<p>References <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml#l00200">for_each()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> {</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  func(arg);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <a class="code" href="namespacearm__compute.xhtml#ab951ff3c9484cd4b243344b3a0f12d95">for_each</a>(func, args...);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_ab951ff3c9484cd4b243344b3a0f12d95"><div class="ttname"><a href="namespacearm__compute.xhtml#ab951ff3c9484cd4b243344b3a0f12d95">arm_compute::for_each</a></div><div class="ttdeci">void for_each(F &&func, T &&arg, Ts &&...args)</div><div class="ttdoc">Call the function for each of the arguments. </div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_helpers_8h_source.xhtml#l00211">Helpers.h:211</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a4a351d5c39dec88af98a671da1c43fd6"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a735ac6c2a02e320969625308810444f3">GPUTarget</a> arm_compute::get_arch_from_target </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a735ac6c2a02e320969625308810444f3">GPUTarget</a> </td>
+ <td class="paramname"><em>target</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Helper function to get the GPU arch. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">target</td><td>GPU target</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>the GPU target which shows the arch </dd></dl>
+
+<p>Referenced by <a class="el" href="_c_l_helpers_8h_source.xhtml#l00083">create_kernel()</a>.</p>
+
+</div>
+</div>
<a class="anchor" id="ab04905b0c6c0e4091160561eae870101"></a>
<div class="memitem">
<div class="memproto">
@@ -6249,45 +8456,31 @@
</div>
</div>
-<a class="anchor" id="a98c979818eae59f104fcaf8de723aeda"></a>
+<a class="anchor" id="a9d0143bdde8255313aae6ac020dd629c"></a>
<div class="memitem">
<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname">bool arm_compute::have_different_shapes </td>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a735ac6c2a02e320969625308810444f3">GPUTarget</a> arm_compute::get_target_from_device </td>
<td>(</td>
- <td class="paramtype">const <a class="el" href="classarm__compute_1_1_i_tensor.xhtml">ITensor</a> * </td>
- <td class="paramname"><em>tensor_1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
+ <td class="paramtype">cl::Device & </td>
+ <td class="paramname"><em>device</em></td><td>)</td>
<td></td>
- <td class="paramtype">const <a class="el" href="classarm__compute_1_1_i_tensor.xhtml">ITensor</a> * </td>
- <td class="paramname"><em>tensor_2</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
</tr>
</table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span> </td>
- </tr>
-</table>
</div><div class="memdoc">
-<p>Definition at line <a class="el" href="_validate_8h_source.xhtml#l00109">109</a> of file <a class="el" href="_validate_8h_source.xhtml">Validate.h</a>.</p>
+<p>Helper function to get the GPU target from CL device. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">device</td><td>A CL device</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>the GPU target </dd></dl>
-<p>References <a class="el" href="_tensor_info_8h_source.xhtml#l00190">TensorInfo::dimension()</a>, <a class="el" href="classarm__compute_1_1_i_tensor.xhtml#a8df2a8ec8fcd4258450270f15651b6c9">ITensor::info()</a>, and <a class="el" href="_dimensions_8h_source.xhtml#l00045">Dimensions< int >::num_max_dimensions</a>.</p>
+<p>Referenced by <a class="el" href="_c_l_helpers_8h_source.xhtml#l00083">create_kernel()</a>, and <a class="el" href="_c_l_scheduler_8h_source.xhtml#l00072">CLScheduler::init()</a>.</p>
-<p>Referenced by <a class="el" href="_validate_8h_source.xhtml#l00132">error_on_mismatching_shapes()</a>.</p>
-<div class="fragment"><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i = 0; i < <a class="code" href="classarm__compute_1_1_dimensions.xhtml#a1b67d5b720119d50faa286c774579ecc">arm_compute::Coordinates::num_max_dimensions</a>; ++i)</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">if</span>(tensor_1->info()->dimension(i) != tensor_2->info()->dimension(i))</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> }</div><div class="ttc" id="classarm__compute_1_1_dimensions_xhtml_a1b67d5b720119d50faa286c774579ecc"><div class="ttname"><a href="classarm__compute_1_1_dimensions.xhtml#a1b67d5b720119d50faa286c774579ecc">arm_compute::Dimensions< int >::num_max_dimensions</a></div><div class="ttdeci">static constexpr size_t num_max_dimensions</div><div class="ttdoc">Number of dimensions the tensor has. </div><div class="ttdef"><b>Definition:</b> <a href="_dimensions_8h_source.xhtml#l00045">Dimensions.h:45</a></div></div>
-</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a3bb1b3d01f14dbc0beb1e826eefeddc6"></a>
@@ -6313,10 +8506,50 @@
</dl>
<dl class="section return"><dt>Returns</dt><dd>Intersection of all regions. </dd></dl>
-<p>Definition at line <a class="el" href="_helpers_8h_source.xhtml#l00357">357</a> of file <a class="el" href="_helpers_8h_source.xhtml">Helpers.h</a>.</p>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml#l00395">395</a> of file <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml">Helpers.h</a>.</p>
-<p>References <a class="el" href="_types_8h_source.xhtml#l00116">ValidRegion::anchor</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00108">Dimensions< T >::num_dimensions()</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00073">Dimensions< T >::set()</a>, and <a class="el" href="_types_8h_source.xhtml#l00117">ValidRegion::shape</a>.</p>
-<div class="fragment"><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> {</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keyword">auto</span> intersect = [](<span class="keyword">const</span> ValidRegion & r1, <span class="keyword">const</span> ValidRegion & r2) -> ValidRegion</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  {</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  ValidRegion region;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> </div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> d = 0; d < std::min(r1.anchor.num_dimensions(), r2.anchor.num_dimensions()); ++d)</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  {</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  region.anchor.set(d, std::max(r1.anchor[d], r2.anchor[d]));</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  }</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> </div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> d = 0; d < std::min(r1.shape.num_dimensions(), r2.shape.num_dimensions()); ++d)</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  {</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  region.shape.set(d, std::min(r1.shape[d], r2.shape[d]));</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  }</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span> </div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="keywordflow">return</span> region;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  };</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> </div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="keywordflow">return</span> foldl(intersect, std::forward<Ts>(regions)...);</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span> }</div></div><!-- fragment -->
+<p>References <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00118">ValidRegion::anchor</a>, <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml#l00222">foldl()</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00880">arm_compute::test::fixed_point_arithmetic::detail::max()</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00875">arm_compute::test::fixed_point_arithmetic::detail::min()</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00109">Dimensions< T >::num_dimensions()</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00074">Dimensions< T >::set()</a>, <a class="el" href="_tensor_shape_8h_source.xhtml#l00074">TensorShape::set()</a>, and <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00119">ValidRegion::shape</a>.</p>
+<div class="fragment"><div class="line"><a name="l00396"></a><span class="lineno"> 396</span> {</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="keyword">auto</span> intersect = [](<span class="keyword">const</span> ValidRegion & r1, <span class="keyword">const</span> ValidRegion & r2) -> ValidRegion</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  {</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  ValidRegion region;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span> </div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> d = 0; d < <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">std::min</a>(r1.anchor.num_dimensions(), r2.anchor.num_dimensions()); ++d)</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>  region.anchor.set(d, <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">std::max</a>(r1.anchor[d], r2.anchor[d]));</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  }</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> </div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> d = 0; d < <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">std::min</a>(r1.shape.num_dimensions(), r2.shape.num_dimensions()); ++d)</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  {</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  region.shape.set(d, <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">std::min</a>(r1.shape[d], r2.shape[d]));</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  }</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> </div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  <span class="keywordflow">return</span> region;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  };</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span> </div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute.xhtml#a05d0de315da2ecf1fa7d22ffad49b254">foldl</a>(intersect, std::forward<Ts>(regions)...);</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> }</div><div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_aabcf39e3917f842dbc5fbb0d802f24d5"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">arm_compute::test::fixed_point_arithmetic::detail::min</a></div><div class="ttdeci">fixed_point< T > min(fixed_point< T > x, fixed_point< T > y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00875">FixedPoint.h:875</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a05d0de315da2ecf1fa7d22ffad49b254"><div class="ttname"><a href="namespacearm__compute.xhtml#a05d0de315da2ecf1fa7d22ffad49b254">arm_compute::foldl</a></div><div class="ttdeci">I foldl(F &&func, I &&initial, T &&value, Vs &&...values)</div><div class="ttdoc">Fold left. </div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_helpers_8h_source.xhtml#l00245">Helpers.h:245</a></div></div>
+<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_ad91bb73431b4de1f4946ed949d444849"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">arm_compute::test::fixed_point_arithmetic::detail::max</a></div><div class="ttdeci">fixed_point< T > max(fixed_point< T > x, fixed_point< T > y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00880">FixedPoint.h:880</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="ab6bb62694ae8369d18a9c9687040975e"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool arm_compute::is_data_type_fixed_point </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> </td>
+ <td class="paramname"><em>dt</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Check if a given data type is of fixed point type. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">dt</td><td>Input data type.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>True if data type is of fixed point type, else false. </dd></dl>
+
+<p>Definition at line <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00658">658</a> of file <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml">Utils.h</a>.</p>
+
+<p>References <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a48d877702a2957f5a932c43a357866f9">QS16</a>, and <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a11cde4d3551db3f9498d339a67189543">QS8</a>.</p>
+<div class="fragment"><div class="line"><a name="l00659"></a><span class="lineno"> 659</span> {</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="keywordflow">switch</span>(dt)</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  {</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  <span class="keywordflow">case</span> DataType::QS8:</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  <span class="keywordflow">case</span> DataType::QS16:</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  }</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span> }</div></div><!-- fragment -->
</div>
</div>
<a class="anchor" id="af5982a092e9eb743fce2d6392bdd8897"></a>
@@ -6341,20 +8574,31 @@
</table>
</div><div class="memdoc">
-<p>Definition at line <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00621">621</a> of file <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml">Utils.h</a>.</p>
+<p>Check if a given data type is of floating point type. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">dt</td><td>Input data type.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>True if data type is of floating point type, else false. </dd></dl>
+
+<p>Definition at line <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00640">640</a> of file <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml">Utils.h</a>.</p>
<p>References <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a56d8353718e6fdc78b8d69078a2cdb94">F16</a>, and <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a44ad4ef5a76e6aa6fb3e3fa079a54fda">F32</a>.</p>
-<div class="fragment"><div class="line"><a name="l00622"></a><span class="lineno"> 622</span> {</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  <span class="keywordflow">switch</span>(dt)</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  {</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  <span class="keywordflow">case</span> DataType::F16:</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  <span class="keywordflow">case</span> DataType::F32:</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  }</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span> }</div></div><!-- fragment -->
+
+<p>Referenced by <a class="el" href="_reference_8cpp_source.xhtml#l00530">Reference::compute_reference_softmax_layer()</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="keywordflow">switch</span>(dt)</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  {</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  <span class="keywordflow">case</span> DataType::F16:</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  <span class="keywordflow">case</span> DataType::F32:</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  <span class="keywordflow">return</span> <span class="keyword">false</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> }</div></div><!-- fragment -->
</div>
</div>
-<a class="anchor" id="ab72adf11888176ec19224deef7b1a7dc"></a>
+<a class="anchor" id="a532fb45c0261724a4c2e755cfd3a44e6"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::string arm_compute::lower_string </td>
<td>(</td>
- <td class="paramtype">std::string </td>
+ <td class="paramtype">const std::string & </td>
<td class="paramname"><em>val</em></td><td>)</td>
<td></td>
</tr>
@@ -6364,13 +8608,13 @@
<p>Lower a given string. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramname">val</td><td>Given string to lower.</td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">val</td><td>Given string to lower.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The lowered string </dd></dl>
-<p>Referenced by <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00491">data_type_for_convolution_matrix()</a>.</p>
+<p>Referenced by <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00497">data_type_for_convolution_matrix()</a>.</p>
</div>
</div>
@@ -6422,7 +8666,7 @@
</dl>
<dl class="section return"><dt>Returns</dt><dd>The maximum width of the elements. </dd></dl>
-<p>Referenced by <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00665">max_consecutive_elements_display_width_impl()</a>.</p>
+<p>Referenced by <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00703">max_consecutive_elements_display_width_impl()</a>.</p>
</div>
</div>
@@ -6459,18 +8703,18 @@
<p>Identify the maximum width of n consecutive elements. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramdir">[in]</td><td class="paramname">s</td><td>The output stream which will be used to print the elements. Used to extract the stream format.</td></tr>
- <tr><td class="paramdir"></td><td class="paramname">ptr</td><td>Pointer to the elements. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">n</td><td>Number of elements.</td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">s</td><td>The output stream which will be used to print the elements. Used to extract the stream format. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">ptr</td><td>Pointer to the elements. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>Number of elements.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The maximum width of the elements. </dd></dl>
-<p>Definition at line <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00665">665</a> of file <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml">Utils.h</a>.</p>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00703">703</a> of file <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml">Utils.h</a>.</p>
<p>References <a class="el" href="namespacearm__compute.xhtml#ac3f2de3a35ff8d9a47b5b793637784e7">max_consecutive_elements_display_width()</a>, and <a class="el" href="namespacearm__compute.xhtml#a51a0d2ae440bc8cab3fbbe84bfea8b1d">print_consecutive_elements()</a>.</p>
-<div class="fragment"><div class="line"><a name="l00666"></a><span class="lineno"> 666</span> {</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  <span class="keywordtype">int</span> max_width = -1;</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < n; ++i)</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  {</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  std::stringstream ss;</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  ss.copyfmt(s);</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  ss << ptr[i];</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  max_width = std::max<int>(max_width, ss.str().size());</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  }</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  <span class="keywordflow">return</span> max_width;</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span> }</div></div><!-- fragment -->
+<div class="fragment"><div class="line"><a name="l00704"></a><span class="lineno"> 704</span> {</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  <span class="keyword">using</span> print_type = <span class="keyword">typename</span> std::conditional<std::is_floating_point<T>::value, T, <span class="keywordtype">int</span>>::type;</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span> </div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  <span class="keywordtype">int</span> max_width = -1;</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < n; ++i)</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>  std::stringstream ss;</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  ss.copyfmt(s);</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  ss << static_cast<print_type>(ptr[i]);</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  max_width = std::max<int>(max_width, ss.str().size());</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  }</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  <span class="keywordflow">return</span> max_width;</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span> }</div></div><!-- fragment -->
</div>
</div>
<a class="anchor" id="ab14153fb809c18823af3c9c8bc4286cb"></a>
@@ -6504,10 +8748,10 @@
</dl>
<dl class="section return"><dt>Returns</dt><dd>The number of channels for a given image format. </dd></dl>
-<p>Definition at line <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00317">317</a> of file <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml">Utils.h</a>.</p>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00323">323</a> of file <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml">Utils.h</a>.</p>
<p>References <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a56d8353718e6fdc78b8d69078a2cdb94">F16</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a44ad4ef5a76e6aa6fb3e3fa079a54fda">F32</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58ab08f0cb36474118c5bbc03b3a172a778">IYUV</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a202f5d8c2c70d31048154d8b8b28e755">NV12</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a8e9f6aa1af7e0abbc7e64521e6ffe1b4">NV21</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a30ff380a3be74628024063a99fba10f0">RGB888</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a165f06116e7b8d9b2481dfc805db4619">RGBA8888</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6e0b0886efb94aec797f6b830329b72c">S16</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58aa1e28eee0339658d39a8b4d325b56e9c">S32</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58aef9ef3ebca4d2b64b6ec83808bafa5f2">U16</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58ac8bd5bedff8ef192d39a962afc0e19ee">U32</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6669348b484e3008dca2bfa8e85e40b5">U8</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a079eb95759d2ad31254f659d63651825">UV88</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58af557448a61ad2927194f63442e131dfa">UYVY422</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a11cfa56ee0ddbbc30a2fd189d7475f4c">YUV444</a>, and <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a481e7a6945eb9f23e87f2de780b2e164">YUYV422</a>.</p>
-<div class="fragment"><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> {</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordflow">switch</span>(format)</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  {</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordflow">case</span> Format::U8:</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keywordflow">case</span> Format::U16:</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">case</span> Format::S16:</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="keywordflow">case</span> Format::U32:</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keywordflow">case</span> Format::S32:</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keywordflow">case</span> Format::F16:</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keywordflow">case</span> Format::F32:</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="comment">// Because the U and V channels are subsampled</span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="comment">// these formats appear like having only 2 channels:</span></div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keywordflow">case</span> Format::YUYV422:</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keywordflow">case</span> Format::UYVY422:</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keywordflow">return</span> 2;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keywordflow">case</span> Format::UV88:</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">return</span> 2;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keywordflow">case</span> Format::RGB888:</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordflow">return</span> 3;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">case</span> Format::RGBA8888:</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordflow">return</span> 4;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="comment">//Doesn't make sense for planar formats:</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keywordflow">case</span> Format::NV12:</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordflow">case</span> Format::NV21:</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordflow">case</span> Format::IYUV:</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">case</span> Format::YUV444:</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  }</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> }</div></div><!-- fragment -->
+<div class="fragment"><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> {</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keywordflow">switch</span>(format)</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  {</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keywordflow">case</span> Format::U8:</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordflow">case</span> Format::U16:</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordflow">case</span> Format::S16:</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordflow">case</span> Format::U32:</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keywordflow">case</span> Format::S32:</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keywordflow">case</span> Format::F16:</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keywordflow">case</span> Format::F32:</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="comment">// Because the U and V channels are subsampled</span></div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="comment">// these formats appear like having only 2 channels:</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordflow">case</span> Format::YUYV422:</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">case</span> Format::UYVY422:</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordflow">return</span> 2;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keywordflow">case</span> Format::UV88:</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keywordflow">return</span> 2;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordflow">case</span> Format::RGB888:</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordflow">return</span> 3;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">case</span> Format::RGBA8888:</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="keywordflow">return</span> 4;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="comment">//Doesn't make sense for planar formats:</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="keywordflow">case</span> Format::NV12:</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keywordflow">case</span> Format::NV21:</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keywordflow">case</span> Format::IYUV:</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="keywordflow">case</span> Format::YUV444:</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  }</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> }</div></div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a2a71659def659c8b1c164023a99a25a9"></a>
@@ -6541,10 +8785,10 @@
</dl>
<dl class="section return"><dt>Returns</dt><dd>The number of planes for a given image format. </dd></dl>
-<p>Definition at line <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00283">283</a> of file <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml">Utils.h</a>.</p>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00289">289</a> of file <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml">Utils.h</a>.</p>
<p>References <a class="el" href="_error_8h_source.xhtml#l00031">ARM_COMPUTE_ERROR</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a56d8353718e6fdc78b8d69078a2cdb94">F16</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a44ad4ef5a76e6aa6fb3e3fa079a54fda">F32</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58ab08f0cb36474118c5bbc03b3a172a778">IYUV</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a202f5d8c2c70d31048154d8b8b28e755">NV12</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a8e9f6aa1af7e0abbc7e64521e6ffe1b4">NV21</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a30ff380a3be74628024063a99fba10f0">RGB888</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a165f06116e7b8d9b2481dfc805db4619">RGBA8888</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6e0b0886efb94aec797f6b830329b72c">S16</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58aa1e28eee0339658d39a8b4d325b56e9c">S32</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58aef9ef3ebca4d2b64b6ec83808bafa5f2">U16</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58ac8bd5bedff8ef192d39a962afc0e19ee">U32</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6669348b484e3008dca2bfa8e85e40b5">U8</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58af557448a61ad2927194f63442e131dfa">UYVY422</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a11cfa56ee0ddbbc30a2fd189d7475f4c">YUV444</a>, and <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a481e7a6945eb9f23e87f2de780b2e164">YUYV422</a>.</p>
-<div class="fragment"><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> {</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">switch</span>(format)</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  {</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">case</span> Format::U8:</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordflow">case</span> Format::S16:</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keywordflow">case</span> Format::U16:</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keywordflow">case</span> Format::S32:</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">case</span> Format::U32:</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordflow">case</span> Format::F16:</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keywordflow">case</span> Format::F32:</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">case</span> Format::RGB888:</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keywordflow">case</span> Format::RGBA8888:</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keywordflow">case</span> Format::YUYV422:</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keywordflow">case</span> Format::UYVY422:</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keywordflow">case</span> Format::NV12:</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordflow">case</span> Format::NV21:</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">return</span> 2;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keywordflow">case</span> Format::IYUV:</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keywordflow">case</span> Format::YUV444:</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">return</span> 3;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">"Not supported format"</span>);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  }</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> }</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00031">Error.h:31</a></div></div>
+<div class="fragment"><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">switch</span>(format)</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keywordflow">case</span> Format::U8:</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">case</span> Format::S16:</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keywordflow">case</span> Format::U16:</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keywordflow">case</span> Format::S32:</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keywordflow">case</span> Format::U32:</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keywordflow">case</span> Format::F16:</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keywordflow">case</span> Format::F32:</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordflow">case</span> Format::RGB888:</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">case</span> Format::RGBA8888:</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keywordflow">case</span> Format::YUYV422:</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keywordflow">case</span> Format::UYVY422:</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordflow">case</span> Format::NV12:</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keywordflow">case</span> Format::NV21:</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordflow">return</span> 2;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">case</span> Format::IYUV:</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordflow">case</span> Format::YUV444:</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keywordflow">return</span> 3;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">"Not supported format"</span>);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  }</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> }</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00031">Error.h:31</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -6563,6 +8807,736 @@
</div>
</div>
+<a class="anchor" id="adfe7525e3cd542da6c043a98f93a8d3c"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::enable_if<<a class="el" href="structarm__compute_1_1enable__bitwise__ops.xhtml">enable_bitwise_ops</a><T>::value, T>::type arm_compute::operator& </td>
+ <td>(</td>
+ <td class="paramtype">T </td>
+ <td class="paramname"><em>lhs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">T </td>
+ <td class="paramname"><em>rhs</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml#l00096">96</a> of file <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml">Helpers.h</a>.</p>
+<div class="fragment"><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">using</span> underlying_type = <span class="keyword">typename</span> std::underlying_type<T>::type;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>T<span class="keyword">></span>(<span class="keyword">static_cast<</span>underlying_type<span class="keyword">></span>(lhs) & static_cast<underlying_type>(rhs));</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a18d43401e8f84ed020429b41ec4e99f5"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">inline ::std::ostream& arm_compute::operator<< </td>
+ <td>(</td>
+ <td class="paramtype">::std::ostream & </td>
+ <td class="paramname"><em>os</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarm__compute_1_1_dimensions.xhtml">Dimensions</a>< T > & </td>
+ <td class="paramname"><em>dimensions</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Formatted output of the <a class="el" href="classarm__compute_1_1_dimensions.xhtml" title="Dimensions with dimensionality. ">Dimensions</a> type. </p>
+
+<p>Definition at line <a class="el" href="_type_printer_8h_source.xhtml#l00037">37</a> of file <a class="el" href="_type_printer_8h_source.xhtml">TypePrinter.h</a>.</p>
+<div class="fragment"><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  os << <span class="stringliteral">"("</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">if</span>(dimensions.num_dimensions() > 0)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  os << dimensions[0];</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> d = 1; d < dimensions.num_dimensions(); ++d)</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  os << <span class="stringliteral">", "</span> << dimensions[d];</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  os << <span class="stringliteral">")"</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">return</span> os;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a8af36ae3a3613112c3a95e57f606359a"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">inline ::std::ostream& arm_compute::operator<< </td>
+ <td>(</td>
+ <td class="paramtype">::std::ostream & </td>
+ <td class="paramname"><em>os</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarm__compute_1_1_pad_stride_info.xhtml">PadStrideInfo</a> & </td>
+ <td class="paramname"><em>pad_stride_info</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Formatted output of the PadStridInfo type. </p>
+
+<p>Definition at line <a class="el" href="_type_printer_8h_source.xhtml#l00057">57</a> of file <a class="el" href="_type_printer_8h_source.xhtml">TypePrinter.h</a>.</p>
+
+<p>References <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00409">PadStrideInfo::pad()</a>, and <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00405">PadStrideInfo::stride()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  os << <span class="stringliteral">"("</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  os << pad_stride_info.stride().first << <span class="stringliteral">", "</span> << pad_stride_info.stride().second;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  os << <span class="stringliteral">", "</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  os << pad_stride_info.pad().first << <span class="stringliteral">", "</span> << pad_stride_info.pad().second;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  os << <span class="stringliteral">")"</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">return</span> os;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a7929032d41d5f23cd1778a70508d0219"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">inline ::std::ostream& arm_compute::operator<< </td>
+ <td>(</td>
+ <td class="paramtype">::std::ostream & </td>
+ <td class="paramname"><em>os</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> & </td>
+ <td class="paramname"><em>mode</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Formatted output of the BorderMode type. </p>
+
+<p>Definition at line <a class="el" href="_type_printer_8h_source.xhtml#l00069">69</a> of file <a class="el" href="_type_printer_8h_source.xhtml">TypePrinter.h</a>.</p>
+
+<p>References <a class="el" href="_error_8h_source.xhtml#l00031">ARM_COMPUTE_ERROR</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a8d6b5cada83510220f59e00ce86d4d92">CONSTANT</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a4ef59320fbe90fe47d40f1f71e4c5daa">REPLICATE</a>, and <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a0db45d2a4141101bdfe48e3314cfbca3">UNDEFINED</a>.</p>
+<div class="fragment"><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">switch</span>(mode)</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">case</span> BorderMode::UNDEFINED:</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  os << <span class="stringliteral">"UNDEFINED"</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">case</span> BorderMode::CONSTANT:</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  os << <span class="stringliteral">"CONSTANT"</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">case</span> BorderMode::REPLICATE:</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  os << <span class="stringliteral">"REPLICATE"</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">"NOT_SUPPORTED!"</span>);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">return</span> os;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> }</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00031">Error.h:31</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a509047aefc691398f1bb60b1f967a98b"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">inline ::std::ostream& arm_compute::operator<< </td>
+ <td>(</td>
+ <td class="paramtype">::std::ostream & </td>
+ <td class="paramname"><em>os</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9">InterpolationPolicy</a> & </td>
+ <td class="paramname"><em>policy</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Formatted output of the InterpolationPolicy type. </p>
+
+<p>Definition at line <a class="el" href="_type_printer_8h_source.xhtml#l00090">90</a> of file <a class="el" href="_type_printer_8h_source.xhtml">TypePrinter.h</a>.</p>
+
+<p>References <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9a639aaa22a784d5e5cb03a522267e79c4">AREA</a>, <a class="el" href="_error_8h_source.xhtml#l00031">ARM_COMPUTE_ERROR</a>, <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9aad6fddf718ad19b063e02fdd7e8e3e65">BILINEAR</a>, and <a class="el" href="namespacearm__compute.xhtml#a966a9c417ce5e94dca08d9b5e745c0c9a7f5ccbc3d30c2cd3fd04d567946cbde2">NEAREST_NEIGHBOR</a>.</p>
+<div class="fragment"><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">switch</span>(policy)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">case</span> InterpolationPolicy::NEAREST_NEIGHBOR:</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  os << <span class="stringliteral">"NEAREST_NEIGHBOR"</span>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">case</span> InterpolationPolicy::BILINEAR:</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  os << <span class="stringliteral">"BILINEAR"</span>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">case</span> InterpolationPolicy::AREA:</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  os << <span class="stringliteral">"AREA"</span>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">"NOT_SUPPORTED!"</span>);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">return</span> os;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> }</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00031">Error.h:31</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a4287c6842a60e5f6bf309e55f8813527"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">inline ::std::ostream& arm_compute::operator<< </td>
+ <td>(</td>
+ <td class="paramtype">::std::ostream & </td>
+ <td class="paramname"><em>os</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6f">ConvertPolicy</a> & </td>
+ <td class="paramname"><em>policy</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Formatted output of the ConversionPolicy type. </p>
+
+<p>Definition at line <a class="el" href="_type_printer_8h_source.xhtml#l00111">111</a> of file <a class="el" href="_type_printer_8h_source.xhtml">TypePrinter.h</a>.</p>
+
+<p>References <a class="el" href="_error_8h_source.xhtml#l00031">ARM_COMPUTE_ERROR</a>, <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6fa4729d95f983955f0d93a30179deb2b86">SATURATE</a>, and <a class="el" href="namespacearm__compute.xhtml#a82b8ac759c804bc1fb4e2d21e178fb6fae1c8555fcf0ea2bb648a6fd527d658c0">WRAP</a>.</p>
+<div class="fragment"><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">switch</span>(policy)</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">case</span> ConvertPolicy::WRAP:</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  os << <span class="stringliteral">"WRAP"</span>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">case</span> ConvertPolicy::SATURATE:</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  os << <span class="stringliteral">"SATURATE"</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">"NOT_SUPPORTED!"</span>);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">return</span> os;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> }</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00031">Error.h:31</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a9d79efe2673aeb3f9a9160b6a78de50c"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">inline ::std::ostream& arm_compute::operator<< </td>
+ <td>(</td>
+ <td class="paramtype">::std::ostream & </td>
+ <td class="paramname"><em>os</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml#a56297e0f7b215eea46c818cb7528d9ea">ActivationLayerInfo::ActivationFunction</a> & </td>
+ <td class="paramname"><em>act_function</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Formatted output of the activation function type. </p>
+
+<p>Definition at line <a class="el" href="_type_printer_8h_source.xhtml#l00129">129</a> of file <a class="el" href="_type_printer_8h_source.xhtml">TypePrinter.h</a>.</p>
+
+<p>References <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml#a56297e0f7b215eea46c818cb7528d9eaa7d8a220d2262f9d6c658d549ee12cf2c">ActivationLayerInfo::ABS</a>, <a class="el" href="_error_8h_source.xhtml#l00031">ARM_COMPUTE_ERROR</a>, <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml#a56297e0f7b215eea46c818cb7528d9eaacc516ab03b98f1c908ddf6ed4a7c45e9">ActivationLayerInfo::BOUNDED_RELU</a>, <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml#a56297e0f7b215eea46c818cb7528d9eaaaac544aacc3615aada24897a215f5046">ActivationLayerInfo::LINEAR</a>, <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml#a56297e0f7b215eea46c818cb7528d9eaa72ee60fba0509af07cbbd91398d8db9d">ActivationLayerInfo::LOGISTIC</a>, <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml#a56297e0f7b215eea46c818cb7528d9eaad346bb4679d29be241279f15d7795c1c">ActivationLayerInfo::RELU</a>, <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml#a56297e0f7b215eea46c818cb7528d9eaadcc44a50c791a591c74e00ecdda7c58d">ActivationLayerInfo::SOFT_RELU</a>, <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml#a56297e0f7b215eea46c818cb7528d9eaa36875f2500a09ee35d0bb7eb8c0b91b0">ActivationLayerInfo::SQRT</a>, <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml#a56297e0f7b215eea46c818cb7528d9eaa12dec4e1f7ec620651b2b95c440ffac0">ActivationLayerInfo::SQUARE</a>, and <a class="el" href="classarm__compute_1_1_activation_layer_info.xhtml#a56297e0f7b215eea46c818cb7528d9eaa143c8c6f51b9bb893ce71e38702e3cc1">ActivationLayerInfo::TANH</a>.</p>
+<div class="fragment"><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">switch</span>(act_function)</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">case</span> ActivationLayerInfo::ActivationFunction::ABS:</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  os << <span class="stringliteral">"ABS"</span>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">case</span> ActivationLayerInfo::ActivationFunction::BOUNDED_RELU:</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  os << <span class="stringliteral">"BOUNDED_RELU"</span>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">case</span> ActivationLayerInfo::ActivationFunction::LINEAR:</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  os << <span class="stringliteral">"LINEAR"</span>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">case</span> ActivationLayerInfo::ActivationFunction::LOGISTIC:</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  os << <span class="stringliteral">"LOGISTIC"</span>;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">case</span> ActivationLayerInfo::ActivationFunction::RELU:</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  os << <span class="stringliteral">"RELU"</span>;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">case</span> ActivationLayerInfo::ActivationFunction::SOFT_RELU:</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  os << <span class="stringliteral">"SOFT_RELU"</span>;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">case</span> ActivationLayerInfo::ActivationFunction::SQRT:</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  os << <span class="stringliteral">"SQRT"</span>;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">case</span> ActivationLayerInfo::ActivationFunction::SQUARE:</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  os << <span class="stringliteral">"SQUARE"</span>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordflow">case</span> ActivationLayerInfo::ActivationFunction::TANH:</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  os << <span class="stringliteral">"TANH"</span>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">"NOT_SUPPORTED!"</span>);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">return</span> os;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> }</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00031">Error.h:31</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a2ab7370aab6e5698990c50c8871fa6fb"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">inline ::std::ostream& arm_compute::operator<< </td>
+ <td>(</td>
+ <td class="paramtype">::std::ostream & </td>
+ <td class="paramname"><em>os</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#ad4bb8dabdbf8ad75e34220cc666b59ca">NormType</a> & </td>
+ <td class="paramname"><em>norm_type</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Formatted output of the NormType type. </p>
+
+<p>Definition at line <a class="el" href="_type_printer_8h_source.xhtml#l00168">168</a> of file <a class="el" href="_type_printer_8h_source.xhtml">TypePrinter.h</a>.</p>
+
+<p>References <a class="el" href="_error_8h_source.xhtml#l00031">ARM_COMPUTE_ERROR</a>, <a class="el" href="namespacearm__compute.xhtml#ad4bb8dabdbf8ad75e34220cc666b59caa980fef040549733973683b1a868f96e5">CROSS_MAP</a>, <a class="el" href="namespacearm__compute.xhtml#ad4bb8dabdbf8ad75e34220cc666b59caaca2475ab7883ebb9f125241141896190">IN_MAP_1D</a>, and <a class="el" href="namespacearm__compute.xhtml#ad4bb8dabdbf8ad75e34220cc666b59caa6ff8bd96743aae9fd283cd822b84278e">IN_MAP_2D</a>.</p>
+<div class="fragment"><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">switch</span>(norm_type)</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">case</span> NormType::CROSS_MAP:</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  os << <span class="stringliteral">"CROSS_MAP"</span>;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">case</span> NormType::IN_MAP_1D:</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  os << <span class="stringliteral">"IN_MAP_1D"</span>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">case</span> NormType::IN_MAP_2D:</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  os << <span class="stringliteral">"IN_MAP_2D"</span>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">"NOT_SUPPORTED!"</span>);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">return</span> os;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> }</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00031">Error.h:31</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a336cf1e870f467e44c184587a13feeec"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">inline ::std::ostream& arm_compute::operator<< </td>
+ <td>(</td>
+ <td class="paramtype">::std::ostream & </td>
+ <td class="paramname"><em>os</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#a9172da722f0a434e5cc07c0a3c115d93">PoolingType</a> & </td>
+ <td class="paramname"><em>pool_type</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Formatted output of the PoolingType type. </p>
+
+<p>Definition at line <a class="el" href="_type_printer_8h_source.xhtml#l00189">189</a> of file <a class="el" href="_type_printer_8h_source.xhtml">TypePrinter.h</a>.</p>
+
+<p>References <a class="el" href="_error_8h_source.xhtml#l00031">ARM_COMPUTE_ERROR</a>, <a class="el" href="namespacearm__compute.xhtml#a9172da722f0a434e5cc07c0a3c115d93afcefd647d6a866603c627b11347c707a">AVG</a>, and <a class="el" href="namespacearm__compute.xhtml#adf2ced65e536375a1c96425d9fced858a26a4b44a837bf97b972628509912b4a5">MAX</a>.</p>
+<div class="fragment"><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">switch</span>(pool_type)</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">case</span> PoolingType::AVG:</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  os << <span class="stringliteral">"AVG"</span>;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">case</span> PoolingType::MAX:</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  os << <span class="stringliteral">"MAX"</span>;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">"NOT_SUPPORTED!"</span>);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">return</span> os;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> }</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00031">Error.h:31</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a295edc9f8caf95838db2c5e251153514"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">inline ::std::ostream& arm_compute::operator<< </td>
+ <td>(</td>
+ <td class="paramtype">::std::ostream & </td>
+ <td class="paramname"><em>os</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#add6426cbf2e057a195846d4ba09a50be">RoundingPolicy</a> & </td>
+ <td class="paramname"><em>rounding_policy</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Formatted output of the RoundingPolicy type. </p>
+
+<p>Definition at line <a class="el" href="_type_printer_8h_source.xhtml#l00207">207</a> of file <a class="el" href="_type_printer_8h_source.xhtml">TypePrinter.h</a>.</p>
+
+<p>References <a class="el" href="_error_8h_source.xhtml#l00031">ARM_COMPUTE_ERROR</a>, <a class="el" href="namespacearm__compute.xhtml#add6426cbf2e057a195846d4ba09a50bea02ff1fff1812f84c89547fcd6c176150">TO_NEAREST_EVEN</a>, <a class="el" href="namespacearm__compute.xhtml#add6426cbf2e057a195846d4ba09a50bea8c0084566b290fa9e5e429f4ae241f95">TO_NEAREST_UP</a>, and <a class="el" href="namespacearm__compute.xhtml#add6426cbf2e057a195846d4ba09a50bea5631ad8e27788edfca7e13535d862c06">TO_ZERO</a>.</p>
+<div class="fragment"><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">switch</span>(rounding_policy)</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">case</span> RoundingPolicy::TO_ZERO:</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  os << <span class="stringliteral">"TO_ZERO"</span>;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">case</span> RoundingPolicy::TO_NEAREST_UP:</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  os << <span class="stringliteral">"TO_NEAREST_UP"</span>;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">case</span> RoundingPolicy::TO_NEAREST_EVEN:</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  os << <span class="stringliteral">"TO_NEAREST_EVEN"</span>;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">"NOT_SUPPORTED!"</span>);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">return</span> os;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> }</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00031">Error.h:31</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a685af15532d70b8682bcc52f06f034f9"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">inline ::std::ostream& arm_compute::operator<< </td>
+ <td>(</td>
+ <td class="paramtype">::std::ostream & </td>
+ <td class="paramname"><em>os</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> & </td>
+ <td class="paramname"><em>data_type</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Formatted output of the DataType type. </p>
+
+<p>Definition at line <a class="el" href="_type_printer_8h_source.xhtml#l00228">228</a> of file <a class="el" href="_type_printer_8h_source.xhtml">TypePrinter.h</a>.</p>
+
+<p>References <a class="el" href="_error_8h_source.xhtml#l00031">ARM_COMPUTE_ERROR</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a56d8353718e6fdc78b8d69078a2cdb94">F16</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a44ad4ef5a76e6aa6fb3e3fa079a54fda">F32</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a1ad5f6f3069070ec4cbbdc94d5e61e0e">F64</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a11cde4d3551db3f9498d339a67189543">QS8</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6e0b0886efb94aec797f6b830329b72c">S16</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58aa1e28eee0339658d39a8b4d325b56e9c">S32</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a115dca124dc6423c7a400b8a8a0270cc">S64</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6aafb0fced528eaac5fe170b763cda5975">S8</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6abd7ef6d4f35bc7d05c559b65032f15d1">SIZET</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58aef9ef3ebca4d2b64b6ec83808bafa5f2">U16</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58ac8bd5bedff8ef192d39a962afc0e19ee">U32</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a31d65cccd6593e4101db93fb878abcaa">U64</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6669348b484e3008dca2bfa8e85e40b5">U8</a>, and <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a696b031073e74bf2cb98e5ef201d4aa3">UNKNOWN</a>.</p>
+<div class="fragment"><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">switch</span>(data_type)</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">case</span> DataType::UNKNOWN:</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  os << <span class="stringliteral">"UNKNOWN"</span>;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">case</span> DataType::U8:</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  os << <span class="stringliteral">"U8"</span>;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">case</span> DataType::QS8:</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  os << <span class="stringliteral">"QS8"</span>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">case</span> DataType::S8:</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  os << <span class="stringliteral">"S8"</span>;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">case</span> DataType::U16:</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  os << <span class="stringliteral">"U16"</span>;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">case</span> DataType::S16:</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  os << <span class="stringliteral">"S16"</span>;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">case</span> DataType::U32:</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  os << <span class="stringliteral">"U32"</span>;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">case</span> DataType::S32:</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  os << <span class="stringliteral">"S32"</span>;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordflow">case</span> DataType::U64:</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  os << <span class="stringliteral">"U64"</span>;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">case</span> DataType::S64:</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  os << <span class="stringliteral">"S64"</span>;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordflow">case</span> DataType::F16:</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  os << <span class="stringliteral">"F16"</span>;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordflow">case</span> DataType::F32:</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  os << <span class="stringliteral">"F32"</span>;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">case</span> DataType::F64:</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  os << <span class="stringliteral">"F64"</span>;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">case</span> DataType::SIZET:</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  os << <span class="stringliteral">"SIZET"</span>;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">"NOT_SUPPORTED!"</span>);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  }</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> </div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordflow">return</span> os;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span> }</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00031">Error.h:31</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a3b22e54b0ac0204c3b89aebcd695fa03"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">inline ::std::ostream& arm_compute::operator<< </td>
+ <td>(</td>
+ <td class="paramtype">::std::ostream & </td>
+ <td class="paramname"><em>os</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58">Format</a> & </td>
+ <td class="paramname"><em>format</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Formatted output of the Format type. </p>
+
+<p>Definition at line <a class="el" href="_type_printer_8h_source.xhtml#l00282">282</a> of file <a class="el" href="_type_printer_8h_source.xhtml">TypePrinter.h</a>.</p>
+
+<p>References <a class="el" href="_error_8h_source.xhtml#l00031">ARM_COMPUTE_ERROR</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a56d8353718e6fdc78b8d69078a2cdb94">F16</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a44ad4ef5a76e6aa6fb3e3fa079a54fda">F32</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58ab08f0cb36474118c5bbc03b3a172a778">IYUV</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a202f5d8c2c70d31048154d8b8b28e755">NV12</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a8e9f6aa1af7e0abbc7e64521e6ffe1b4">NV21</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a30ff380a3be74628024063a99fba10f0">RGB888</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a165f06116e7b8d9b2481dfc805db4619">RGBA8888</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6e0b0886efb94aec797f6b830329b72c">S16</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58aa1e28eee0339658d39a8b4d325b56e9c">S32</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58aef9ef3ebca4d2b64b6ec83808bafa5f2">U16</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58ac8bd5bedff8ef192d39a962afc0e19ee">U32</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6669348b484e3008dca2bfa8e85e40b5">U8</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a696b031073e74bf2cb98e5ef201d4aa3">UNKNOWN</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a079eb95759d2ad31254f659d63651825">UV88</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58af557448a61ad2927194f63442e131dfa">UYVY422</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a11cfa56ee0ddbbc30a2fd189d7475f4c">YUV444</a>, and <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a481e7a6945eb9f23e87f2de780b2e164">YUYV422</a>.</p>
+<div class="fragment"><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keywordflow">switch</span>(format)</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  {</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keywordflow">case</span> Format::UNKNOWN:</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  os << <span class="stringliteral">"UNKNOWN"</span>;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keywordflow">case</span> Format::U8:</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  os << <span class="stringliteral">"U8"</span>;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordflow">case</span> Format::S16:</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  os << <span class="stringliteral">"S16"</span>;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keywordflow">case</span> Format::U16:</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  os << <span class="stringliteral">"U16"</span>;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keywordflow">case</span> Format::S32:</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  os << <span class="stringliteral">"S32"</span>;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">case</span> Format::U32:</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  os << <span class="stringliteral">"U32"</span>;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">case</span> Format::F16:</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  os << <span class="stringliteral">"F16"</span>;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordflow">case</span> Format::F32:</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  os << <span class="stringliteral">"F32"</span>;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keywordflow">case</span> Format::UV88:</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  os << <span class="stringliteral">"UV88"</span>;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">case</span> Format::RGB888:</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  os << <span class="stringliteral">"RGB888"</span>;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordflow">case</span> Format::RGBA8888:</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  os << <span class="stringliteral">"RGBA8888"</span>;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordflow">case</span> Format::YUV444:</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  os << <span class="stringliteral">"YUV444"</span>;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keywordflow">case</span> Format::YUYV422:</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  os << <span class="stringliteral">"YUYV422"</span>;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keywordflow">case</span> Format::NV12:</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  os << <span class="stringliteral">"NV12"</span>;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordflow">case</span> Format::NV21:</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  os << <span class="stringliteral">"NV21"</span>;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keywordflow">case</span> Format::IYUV:</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  os << <span class="stringliteral">"IYUV"</span>;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keywordflow">case</span> Format::UYVY422:</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  os << <span class="stringliteral">"UYVY422"</span>;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">"NOT_SUPPORTED!"</span>);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  }</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> </div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keywordflow">return</span> os;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> }</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00031">Error.h:31</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="aa66be15c012986ebd4c1934b97e08a36"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">inline ::std::ostream& arm_compute::operator<< </td>
+ <td>(</td>
+ <td class="paramtype">::std::ostream & </td>
+ <td class="paramname"><em>os</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455a">Channel</a> & </td>
+ <td class="paramname"><em>channel</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Formatted output of the Channel type. </p>
+
+<p>Definition at line <a class="el" href="_type_printer_8h_source.xhtml#l00345">345</a> of file <a class="el" href="_type_printer_8h_source.xhtml">TypePrinter.h</a>.</p>
+
+<p>References <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa7fc56270e7a70fa81a5935b72eacbe29">A</a>, <a class="el" href="_error_8h_source.xhtml#l00031">ARM_COMPUTE_ERROR</a>, <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571">B</a>, <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa9c5959e6f08f10d0edbadf5be1f33c53">C0</a>, <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa1a2ddc2db4693cfd16d534cde5572cc1">C1</a>, <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aaf1a543f5a2c5d49bc5dde298fcf716e4">C2</a>, <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa3abe124ecc82bf2c2e22e6058f38c50c">C3</a>, <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aadfcf28d0734569a6a693bc8194de62bf">G</a>, <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aae1e1d3d40573127e9ee0480caf1283d6">R</a>, <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa4c614360da93c0a041b22e537de151eb">U</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a696b031073e74bf2cb98e5ef201d4aa3">UNKNOWN</a>, <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa5206560a306a2e085a437fd258eb57ce">V</a>, and <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa57cec4137b614c87cb4e24a3d003a3e0">Y</a>.</p>
+<div class="fragment"><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="keywordflow">switch</span>(channel)</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  {</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keywordflow">case</span> Channel::UNKNOWN:</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  os << <span class="stringliteral">"UNKNOWN"</span>;</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">case</span> Channel::C0:</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  os << <span class="stringliteral">"C0"</span>;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="keywordflow">case</span> Channel::C1:</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  os << <span class="stringliteral">"C1"</span>;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="keywordflow">case</span> Channel::C2:</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  os << <span class="stringliteral">"C2"</span>;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keywordflow">case</span> Channel::C3:</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  os << <span class="stringliteral">"C3"</span>;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keywordflow">case</span> Channel::R:</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  os << <span class="stringliteral">"R"</span>;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keywordflow">case</span> Channel::G:</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  os << <span class="stringliteral">"G"</span>;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="keywordflow">case</span> Channel::B:</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  os << <span class="stringliteral">"B"</span>;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="keywordflow">case</span> Channel::A:</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  os << <span class="stringliteral">"A"</span>;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="keywordflow">case</span> Channel::Y:</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  os << <span class="stringliteral">"Y"</span>;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keywordflow">case</span> Channel::U:</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  os << <span class="stringliteral">"U"</span>;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <span class="keywordflow">case</span> Channel::V:</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  os << <span class="stringliteral">"V"</span>;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">"NOT_SUPPORTED!"</span>);</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  }</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> </div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keywordflow">return</span> os;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> }</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00031">Error.h:31</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="af32c4c5cdd0efde09774eb803bc8a0bd"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">inline ::std::ostream& arm_compute::operator<< </td>
+ <td>(</td>
+ <td class="paramtype">::std::ostream & </td>
+ <td class="paramname"><em>os</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarm__compute_1_1_border_size.xhtml">BorderSize</a> & </td>
+ <td class="paramname"><em>border</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Formatted output of the <a class="el" href="structarm__compute_1_1_border_size.xhtml" title="Container for 2D border size. ">BorderSize</a> type. </p>
+
+<p>Definition at line <a class="el" href="_type_printer_8h_source.xhtml#l00393">393</a> of file <a class="el" href="_type_printer_8h_source.xhtml">TypePrinter.h</a>.</p>
+
+<p>References <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00197">BorderSize::bottom</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00198">BorderSize::left</a>, <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00196">BorderSize::right</a>, and <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00195">BorderSize::top</a>.</p>
+<div class="fragment"><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>  os << <span class="stringliteral">"{"</span> << border.top << <span class="stringliteral">", "</span></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  << border.right << <span class="stringliteral">", "</span></div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  << border.bottom << <span class="stringliteral">", "</span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  << border.left << <span class="stringliteral">"}"</span>;</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="keywordflow">return</span> os;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a1379e5f8a8b4640d7a52d901f0539ccd"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">inline ::std::istream& arm_compute::operator>> </td>
+ <td>(</td>
+ <td class="paramtype">::std::istream & </td>
+ <td class="paramname"><em>is</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> & </td>
+ <td class="paramname"><em>mode</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Formatted input of the BorderMode type. </p>
+
+<p>Definition at line <a class="el" href="_type_reader_8h_source.xhtml#l00036">36</a> of file <a class="el" href="_type_reader_8h_source.xhtml">TypeReader.h</a>.</p>
+
+<p>References <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a8d6b5cada83510220f59e00ce86d4d92">CONSTANT</a>, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a4ef59320fbe90fe47d40f1f71e4c5daa">REPLICATE</a>, and <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a0db45d2a4141101bdfe48e3314cfbca3">UNDEFINED</a>.</p>
+<div class="fragment"><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  std::string value;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  is >> value;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  std::transform(value.begin(), value.end(), value.begin(), [](<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> c)</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">return</span> std::toupper(c);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  });</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">if</span>(value == <span class="stringliteral">"UNDEFINED"</span>)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  mode = BorderMode::UNDEFINED;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(value == <span class="stringliteral">"CONSTANT"</span>)</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  mode = BorderMode::CONSTANT;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(value == <span class="stringliteral">"REPLICATE"</span>)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  mode = BorderMode::REPLICATE;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">throw</span> std::invalid_argument(<span class="stringliteral">"Unsupported value '"</span> + value + <span class="stringliteral">"' for border mode"</span>);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">return</span> is;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="ab7b3af731907e85fcaf72555c446176b"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">uint8_t pixel_area_c1u8_clamp </td>
+ <td>(</td>
+ <td class="paramtype">const uint8_t * </td>
+ <td class="paramname"><em>first_pixel_ptr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"><em>stride</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"><em>width</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"><em>height</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float </td>
+ <td class="paramname"><em>wr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float </td>
+ <td class="paramname"><em>hr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>y</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Return the pixel at (x,y) using area interpolation by clamping when out of borders. </p>
+<p>The image must be single channel U8</p>
+<dl class="section note"><dt>Note</dt><dd>The interpolation area depends on the width and height ration of the input and output images </dd>
+<dd>
+Currently average of the contributing pixels is calculated</dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">first_pixel_ptr</td><td>Pointer to the first pixel of a single channel U8 image. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">stride</td><td>Stride in bytes of the image </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">width</td><td>Width of the image </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">height</td><td>Height of the image </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">wr</td><td>Width ratio among the input image width and output image width. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">hr</td><td>Height ratio among the input image height and output image height. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">x</td><td>X position of the wanted pixel </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">y</td><td>Y position of the wanted pixel</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The pixel at (x, y) using area interpolation. </dd></dl>
+
+<p>Definition at line <a class="el" href="_helpers_8inl_source.xhtml#l00081">81</a> of file <a class="el" href="_helpers_8inl_source.xhtml">Helpers.inl</a>.</p>
+
+<p>References <a class="el" href="accumulate_8cl_source.xhtml#l00041">accumulate()</a>, <a class="el" href="_error_8h_source.xhtml#l00124">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00880">arm_compute::test::fixed_point_arithmetic::detail::max()</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00875">arm_compute::test::fixed_point_arithmetic::detail::min()</a>, and <a class="el" href="_window_8inl_source.xhtml#l00040">Window::set()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(first_pixel_ptr == <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="comment">// Calculate sampling position</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordtype">float</span> in_x = (x + 0.5f) * wr - 0.5f;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordtype">float</span> in_y = (y + 0.5f) * hr - 0.5f;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="comment">// Get bounding box offsets</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordtype">int</span> x_from = std::floor(x * wr - 0.5f - in_x);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordtype">int</span> y_from = std::floor(y * hr - 0.5f - in_y);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordtype">int</span> x_to = std::ceil((x + 1) * wr - 0.5f - in_x);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordtype">int</span> y_to = std::ceil((y + 1) * hr - 0.5f - in_y);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="comment">// Clamp position to borders</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  in_x = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">std::max</a>(-1.f, <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">std::min</a>(in_x, static_cast<float>(width)));</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  in_y = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">std::max</a>(-1.f, <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">std::min</a>(in_y, static_cast<float>(height)));</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="comment">// Clamp bounding box offsets to borders</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  x_from = ((in_x + x_from) < -1) ? -1 : x_from;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  y_from = ((in_y + y_from) < -1) ? -1 : y_from;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  x_to = ((in_x + x_to) > width) ? (width - in_x) : x_to;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  y_to = ((in_y + y_to) > height) ? (height - in_y) : y_to;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="comment">// Get pixel index</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> xi = std::floor(in_x);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> yi = std::floor(in_y);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="comment">// Bounding box elements in each dimension</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> x_elements = (x_to - x_from + 1);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> y_elements = (y_to - y_from + 1);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(x_elements == 0 || y_elements == 0);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="comment">// Sum pixels in area</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordtype">int</span> sum = 0;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = yi + y_from, je = yi + y_to; j <= je; ++j)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keyword">const</span> uint8_t *ptr = first_pixel_ptr + j * stride + xi + x_from;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  sum = <a class="code" href="accumulate_8cl.xhtml#a00e540076dd545ad59ac7482f8cdf514">std::accumulate</a>(ptr, ptr + x_elements, sum);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="comment">// Return average</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">return</span> sum / (x_elements * y_elements);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> }</div><div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_aabcf39e3917f842dbc5fbb0d802f24d5"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">arm_compute::test::fixed_point_arithmetic::detail::min</a></div><div class="ttdeci">fixed_point< T > min(fixed_point< T > x, fixed_point< T > y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00875">FixedPoint.h:875</a></div></div>
+<div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00124">Error.h:124</a></div></div>
+<div class="ttc" id="accumulate_8cl_xhtml_a00e540076dd545ad59ac7482f8cdf514"><div class="ttname"><a href="accumulate_8cl.xhtml#a00e540076dd545ad59ac7482f8cdf514">accumulate</a></div><div class="ttdeci">__kernel void accumulate(__global uchar *input_ptr, uint input_stride_x, uint input_step_x, uint input_stride_y, uint input_step_y, uint input_offset_first_element_in_bytes, __global uchar *accu_ptr, uint accu_stride_x, uint accu_step_x, uint accu_stride_y, uint accu_step_y, uint accu_offset_first_element_in_bytes)</div><div class="ttdoc">This function accumulates an input image into output image. </div><div class="ttdef"><b>Definition:</b> <a href="accumulate_8cl_source.xhtml#l00041">accumulate.cl:41</a></div></div>
+<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_ad91bb73431b4de1f4946ed949d444849"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">arm_compute::test::fixed_point_arithmetic::detail::max</a></div><div class="ttdeci">fixed_point< T > max(fixed_point< T > x, fixed_point< T > y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00880">FixedPoint.h:880</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a49560b7b7e0095fd7501b0a6d7042f2b"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">uint8_t pixel_bilinear_c1u8 </td>
+ <td>(</td>
+ <td class="paramtype">const uint8_t * </td>
+ <td class="paramname"><em>first_pixel_ptr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"><em>stride</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float </td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float </td>
+ <td class="paramname"><em>y</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Return the pixel at (x,y) using bilinear interpolation. </p>
+<p>The image must be single channel U8</p>
+<dl class="section warning"><dt>Warning</dt><dd>Only works if the iterator was created with an IImage</dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">first_pixel_ptr</td><td>Pointer to the first pixel of a single channel U8 image. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">stride</td><td>Stride in bytes of the image; </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">x</td><td>X position of the wanted pixel </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">y</td><td>Y position of the wanted pixel</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The pixel at (x, y) using bilinear interpolation. </dd></dl>
+
+<p>Definition at line <a class="el" href="_helpers_8inl_source.xhtml#l00052">52</a> of file <a class="el" href="_helpers_8inl_source.xhtml">Helpers.inl</a>.</p>
+
+<p>References <a class="el" href="_error_8h_source.xhtml#l00124">ARM_COMPUTE_ERROR_ON</a>, and <a class="el" href="_helpers_8inl_source.xhtml#l00032">delta_bilinear_c1u8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(first_pixel_ptr == <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">const</span> int32_t xi = x;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">const</span> int32_t yi = y;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">const</span> <span class="keywordtype">float</span> dx = x - xi;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">const</span> <span class="keywordtype">float</span> dy = y - yi;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute.xhtml#aceaaf77291e83ca0dfaed677c93ce350">delta_bilinear_c1u8</a>(first_pixel_ptr + xi + yi * stride, stride, dx, dy);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> }</div><div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00124">Error.h:124</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_aceaaf77291e83ca0dfaed677c93ce350"><div class="ttname"><a href="namespacearm__compute.xhtml#aceaaf77291e83ca0dfaed677c93ce350">arm_compute::delta_bilinear_c1u8</a></div><div class="ttdeci">uint8_t delta_bilinear_c1u8(const uint8_t *pixel_ptr, size_t stride, float dx, float dy)</div><div class="ttdoc">Computes bilinear interpolation using the pointer to the top-left pixel and the pixel&#39;s distance betw...</div><div class="ttdef"><b>Definition:</b> <a href="_helpers_8inl_source.xhtml#l00032">Helpers.inl:32</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a7c3fa3051dcd3570157d121b6cb0e56a"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">uint8_t pixel_bilinear_c1u8_clamp </td>
+ <td>(</td>
+ <td class="paramtype">const uint8_t * </td>
+ <td class="paramname"><em>first_pixel_ptr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"><em>stride</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"><em>width</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"><em>height</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float </td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float </td>
+ <td class="paramname"><em>y</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Return the pixel at (x,y) using bilinear interpolation by clamping when out of borders. </p>
+<p>The image must be single channel U8</p>
+<dl class="section warning"><dt>Warning</dt><dd>Only works if the iterator was created with an IImage</dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">first_pixel_ptr</td><td>Pointer to the first pixel of a single channel U8 image. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">stride</td><td>Stride in bytes of the image </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">width</td><td>Width of the image </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">height</td><td>Height of the image </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">x</td><td>X position of the wanted pixel </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">y</td><td>Y position of the wanted pixel</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The pixel at (x, y) using bilinear interpolation. </dd></dl>
+
+<p>Definition at line <a class="el" href="_helpers_8inl_source.xhtml#l00065">65</a> of file <a class="el" href="_helpers_8inl_source.xhtml">Helpers.inl</a>.</p>
+
+<p>References <a class="el" href="_error_8h_source.xhtml#l00124">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_helpers_8inl_source.xhtml#l00032">delta_bilinear_c1u8()</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00880">arm_compute::test::fixed_point_arithmetic::detail::max()</a>, and <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00875">arm_compute::test::fixed_point_arithmetic::detail::min()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(first_pixel_ptr == <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  x = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">std::max</a>(-1.f, <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">std::min</a>(x, static_cast<float>(width)));</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  y = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">std::max</a>(-1.f, <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">std::min</a>(y, static_cast<float>(height)));</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">const</span> <span class="keywordtype">float</span> xi = std::floor(x);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keyword">const</span> <span class="keywordtype">float</span> yi = std::floor(y);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">const</span> <span class="keywordtype">float</span> dx = x - xi;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keyword">const</span> <span class="keywordtype">float</span> dy = y - yi;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute.xhtml#aceaaf77291e83ca0dfaed677c93ce350">delta_bilinear_c1u8</a>(first_pixel_ptr + static_cast<int32_t>(xi) + static_cast<int32_t>(yi) * stride, stride, dx, dy);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> }</div><div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_aabcf39e3917f842dbc5fbb0d802f24d5"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">arm_compute::test::fixed_point_arithmetic::detail::min</a></div><div class="ttdeci">fixed_point< T > min(fixed_point< T > x, fixed_point< T > y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00875">FixedPoint.h:875</a></div></div>
+<div class="ttc" id="_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00124">Error.h:124</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_aceaaf77291e83ca0dfaed677c93ce350"><div class="ttname"><a href="namespacearm__compute.xhtml#aceaaf77291e83ca0dfaed677c93ce350">arm_compute::delta_bilinear_c1u8</a></div><div class="ttdeci">uint8_t delta_bilinear_c1u8(const uint8_t *pixel_ptr, size_t stride, float dx, float dy)</div><div class="ttdoc">Computes bilinear interpolation using the pointer to the top-left pixel and the pixel&#39;s distance betw...</div><div class="ttdef"><b>Definition:</b> <a href="_helpers_8inl_source.xhtml#l00032">Helpers.inl:32</a></div></div>
+<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_ad91bb73431b4de1f4946ed949d444849"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">arm_compute::test::fixed_point_arithmetic::detail::max</a></div><div class="ttdeci">fixed_point< T > max(fixed_point< T > x, fixed_point< T > y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00880">FixedPoint.h:880</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
<a class="anchor" id="a4823543d67a2520c98669e2a5608ef6a"></a>
<div class="memitem">
<div class="memproto">
@@ -6594,10 +9568,10 @@
</dl>
<dl class="section return"><dt>Returns</dt><dd>The size in bytes of the pixel format </dd></dl>
-<p>Definition at line <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00131">131</a> of file <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml">Utils.h</a>.</p>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00134">134</a> of file <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml">Utils.h</a>.</p>
<p>References <a class="el" href="_error_8h_source.xhtml#l00031">ARM_COMPUTE_ERROR</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a56d8353718e6fdc78b8d69078a2cdb94">F16</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a44ad4ef5a76e6aa6fb3e3fa079a54fda">F32</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58ab08f0cb36474118c5bbc03b3a172a778">IYUV</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a202f5d8c2c70d31048154d8b8b28e755">NV12</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a8e9f6aa1af7e0abbc7e64521e6ffe1b4">NV21</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a30ff380a3be74628024063a99fba10f0">RGB888</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a165f06116e7b8d9b2481dfc805db4619">RGBA8888</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6e0b0886efb94aec797f6b830329b72c">S16</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58aa1e28eee0339658d39a8b4d325b56e9c">S32</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58aef9ef3ebca4d2b64b6ec83808bafa5f2">U16</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58ac8bd5bedff8ef192d39a962afc0e19ee">U32</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a6669348b484e3008dca2bfa8e85e40b5">U8</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a079eb95759d2ad31254f659d63651825">UV88</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58af557448a61ad2927194f63442e131dfa">UYVY422</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a11cfa56ee0ddbbc30a2fd189d7475f4c">YUV444</a>, and <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a481e7a6945eb9f23e87f2de780b2e164">YUYV422</a>.</p>
-<div class="fragment"><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">switch</span>(format)</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">case</span> Format::U8:</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">case</span> Format::U16:</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">case</span> Format::S16:</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">case</span> Format::F16:</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">case</span> Format::UV88:</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">case</span> Format::YUYV422:</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">case</span> Format::UYVY422:</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">return</span> 2;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">case</span> Format::RGB888:</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">return</span> 3;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">case</span> Format::RGBA8888:</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">return</span> 4;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">case</span> Format::U32:</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">case</span> Format::S32:</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">case</span> Format::F32:</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">return</span> 4;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="comment">//Doesn't make sense for planar formats:</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">case</span> Format::NV12:</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">case</span> Format::NV21:</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">case</span> Format::IYUV:</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">case</span> Format::YUV444:</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">"Undefined pixel size for given format"</span>);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> }</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00031">Error.h:31</a></div></div>
+<div class="fragment"><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">switch</span>(format)</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">case</span> Format::U8:</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">case</span> Format::U16:</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">case</span> Format::S16:</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">case</span> Format::F16:</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">case</span> Format::UV88:</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">case</span> Format::YUYV422:</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">case</span> Format::UYVY422:</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">return</span> 2;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">case</span> Format::RGB888:</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">return</span> 3;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">case</span> Format::RGBA8888:</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">return</span> 4;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">case</span> Format::U32:</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">case</span> Format::S32:</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">case</span> Format::F32:</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">return</span> 4;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="comment">//Doesn't make sense for planar formats:</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">case</span> Format::NV12:</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordflow">case</span> Format::NV21:</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">case</span> Format::IYUV:</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">case</span> Format::YUV444:</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">"Undefined pixel size for given format"</span>);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  }</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> }</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00031">Error.h:31</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -6643,10 +9617,10 @@
</dl>
<dl class="section return"><dt>Returns</dt><dd>The plane index of the specific channel of the specific format </dd></dl>
-<p>Definition at line <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00236">236</a> of file <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml">Utils.h</a>.</p>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00242">242</a> of file <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml">Utils.h</a>.</p>
<p>References <a class="el" href="_error_8h_source.xhtml#l00031">ARM_COMPUTE_ERROR</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58ab08f0cb36474118c5bbc03b3a172a778">IYUV</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a202f5d8c2c70d31048154d8b8b28e755">NV12</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a8e9f6aa1af7e0abbc7e64521e6ffe1b4">NV21</a>, <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa4c614360da93c0a041b22e537de151eb">U</a>, <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa5206560a306a2e085a437fd258eb57ce">V</a>, <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa57cec4137b614c87cb4e24a3d003a3e0">Y</a>, and <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a11cfa56ee0ddbbc30a2fd189d7475f4c">YUV444</a>.</p>
-<div class="fragment"><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">switch</span>(format)</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  {</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">case</span> Format::NV12:</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">case</span> Format::NV21:</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  {</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">switch</span>(channel)</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">case</span> Channel::Y:</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">case</span> Channel::U:</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">case</span> Channel::V:</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">"Not supported channel"</span>);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  }</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  }</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordflow">case</span> Format::IYUV:</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordflow">case</span> Format::YUV444:</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">switch</span>(channel)</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">case</span> Channel::Y:</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordflow">case</span> Channel::U:</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">case</span> Channel::V:</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordflow">return</span> 2;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">"Not supported channel"</span>);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  }</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  }</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">"Not supported format"</span>);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  }</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> }</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00031">Error.h:31</a></div></div>
+<div class="fragment"><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">switch</span>(format)</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  {</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">case</span> Format::NV12:</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">case</span> Format::NV21:</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">switch</span>(channel)</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">case</span> Channel::Y:</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">case</span> Channel::U:</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">case</span> Channel::V:</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">"Not supported channel"</span>);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  }</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  }</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">case</span> Format::IYUV:</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordflow">case</span> Format::YUV444:</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  {</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">switch</span>(channel)</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordflow">case</span> Channel::Y:</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">case</span> Channel::U:</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">case</span> Channel::V:</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">return</span> 2;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">"Not supported channel"</span>);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  }</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  }</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <a class="code" href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">"Not supported format"</span>);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> }</div><div class="ttc" id="_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error. </div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00031">Error.h:31</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -6711,7 +9685,7 @@
</dd>
</dl>
-<p>Referenced by <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00665">max_consecutive_elements_display_width_impl()</a>.</p>
+<p>Referenced by <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00703">max_consecutive_elements_display_width_impl()</a>.</p>
</div>
</div>
@@ -6769,8 +9743,8 @@
</dd>
</dl>
-<p>Definition at line <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00642">642</a> of file <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml">Utils.h</a>.</p>
-<div class="fragment"><div class="line"><a name="l00643"></a><span class="lineno"> 643</span> {</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < n; ++i)</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  {</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  <span class="comment">// Set stream width as it is not a "sticky" stream manipulator</span></div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  <span class="keywordflow">if</span>(stream_width != 0)</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  {</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  s.width(stream_width);</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  }</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  s << std::right << ptr[i] << element_delim;</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  }</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span> }</div></div><!-- fragment -->
+<p>Definition at line <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00679">679</a> of file <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml">Utils.h</a>.</p>
+<div class="fragment"><div class="line"><a name="l00680"></a><span class="lineno"> 680</span> {</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  <span class="keyword">using</span> print_type = <span class="keyword">typename</span> std::conditional<std::is_floating_point<T>::value, T, <span class="keywordtype">int</span>>::type;</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span> </div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < n; ++i)</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  {</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  <span class="comment">// Set stream width as it is not a "sticky" stream manipulator</span></div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  <span class="keywordflow">if</span>(stream_width != 0)</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  {</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  s.width(stream_width);</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  }</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  s << std::right << static_cast<print_type>(ptr[i]) << element_delim;</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  }</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span> }</div></div><!-- fragment -->
</div>
</div>
<a class="anchor" id="aefa4a4d3136d77b85cccfce344f9f37f"></a>
@@ -6807,10 +9781,95 @@
</dl>
<dl class="section return"><dt>Returns</dt><dd>The content of the file. </dd></dl>
-<p>Referenced by <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00058">DIV_CEIL()</a>.</p>
+<p>Referenced by <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00059">DIV_CEIL()</a>.</p>
</div>
</div>
+<a class="anchor" id="a43315c66c4d00207f70143233b189085"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> sabs_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td>
+ <td class="paramname"><em>a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point scalar absolute value </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>8 bit fixed point input</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point absolute value </dd></dl>
+
+<p>Definition at line <a class="el" href="_fixed_point_8inl_source.xhtml#l00053">53</a> of file <a class="el" href="_fixed_point_8inl_source.xhtml">FixedPoint.inl</a>.</p>
+
+<p>Referenced by <a class="el" href="_fixed_point_8inl_source.xhtml#l00169">sqexp_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">return</span> a & 0x7F;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="aa8cee074ec68e2ae7830a9472efd8429"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> sadd_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td>
+ <td class="paramname"><em>b</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point scalar add </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 8 bit fixed point input </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 8 bit fixed point input</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point addition </dd></dl>
+
+<p>Definition at line <a class="el" href="_fixed_point_8inl_source.xhtml#l00058">58</a> of file <a class="el" href="_fixed_point_8inl_source.xhtml">FixedPoint.inl</a>.</p>
+
+<p>Referenced by <a class="el" href="_fixed_point_8inl_source.xhtml#l00192">slog_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">return</span> a + b;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> }</div></div><!-- fragment -->
+</div>
+</div>
<a class="anchor" id="a6fd2c972d67298469a6aad75879fffab"></a>
<div class="memitem">
<div class="memproto">
@@ -6874,23 +9933,266 @@
<p>Returns expected width and height of output scaled tensor depending on dimensions rounding mode. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramname">width</td><td>Width of input tensor (Number of columns) </td></tr>
- <tr><td class="paramname">height</td><td>Height of input tensor (Number of rows) </td></tr>
- <tr><td class="paramname">kernel_size</td><td><a class="el" href="classarm__compute_1_1_kernel.xhtml" title="Kernel class. ">Kernel</a> size. </td></tr>
- <tr><td class="paramname">stride_x</td><td>Stride of the operation in the x dimension. </td></tr>
- <tr><td class="paramname">stride_y</td><td>Stride of the operation in the y dimension. </td></tr>
- <tr><td class="paramname">pad_x</td><td>Padding size in the x dimension. </td></tr>
- <tr><td class="paramname">pad_y</td><td>Padding size in the y dimension. </td></tr>
- <tr><td class="paramname">round_type</td><td><a class="el" href="classarm__compute_1_1_dimensions.xhtml" title="Dimensions with dimensionality. ">Dimensions</a> rounding mode.</td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">width</td><td>Width of input tensor (Number of columns) </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">height</td><td>Height of input tensor (Number of rows) </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">kernel_size</td><td><a class="el" href="classarm__compute_1_1_kernel.xhtml" title="Kernel class. ">Kernel</a> size. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">stride_x</td><td>Stride of the operation in the x dimension. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">stride_y</td><td>Stride of the operation in the y dimension. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">pad_x</td><td>Padding size in the x dimension. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">pad_y</td><td>Padding size in the y dimension. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">round_type</td><td><a class="el" href="classarm__compute_1_1_dimensions.xhtml" title="Dimensions with dimensionality. ">Dimensions</a> rounding mode.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A pair with the new width in the first position and the new height in the second. </dd></dl>
-<p>Referenced by <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00491">data_type_for_convolution_matrix()</a>.</p>
+<p>Referenced by <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00497">data_type_for_convolution_matrix()</a>.</p>
</div>
</div>
+<a class="anchor" id="a55e8e161b9a16d750a6cff3fba6cd480"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">float scvt_f32_qs16 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Convert a 16 bit fixed point to float. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>Input to convert </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the conversion 16 bit fixed point -> float </dd></dl>
+
+<p>Definition at line <a class="el" href="_fixed_point_8inl_source.xhtml#l00236">236</a> of file <a class="el" href="_fixed_point_8inl_source.xhtml">FixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">float</span><span class="keyword">></span>(a) / (1 << fixed_point_position);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a62232512d049619479b670c58a607924"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">float scvt_f32_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Convert an 8 bit fixed point to float. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>Input to convert </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the conversion 8 bit fixed point -> float </dd></dl>
+
+<p>Definition at line <a class="el" href="_fixed_point_8inl_source.xhtml#l00225">225</a> of file <a class="el" href="_fixed_point_8inl_source.xhtml">FixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">float</span><span class="keyword">></span>(a) / (1 << fixed_point_position);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="aacd9632313e7c7341b403155575a48ed"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> scvt_qs16_f32 </td>
+ <td>(</td>
+ <td class="paramtype">float </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Convert a float to 16 bit fixed point. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>Input to convert </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the conversion float -> 16 bit fixed point </dd></dl>
+
+<p>Definition at line <a class="el" href="_fixed_point_8inl_source.xhtml#l00241">241</a> of file <a class="el" href="_fixed_point_8inl_source.xhtml">FixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> {</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="comment">// round_nearest_integer(a * 2^(fixed_point_position))</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a><span class="keyword">></span>(<span class="keyword">static_cast<</span><span class="keywordtype">float</span><span class="keyword">></span>(a) * (1 << fixed_point_position) + 0.5f);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a1521eea74b97de8f2df9304e44179400"><div class="ttname"><a href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">arm_compute::qint16_t</a></div><div class="ttdeci">int16_t qint16_t</div><div class="ttdoc">16 bit fixed point scalar value </div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_fixed_point_8h_source.xhtml#l00030">FixedPoint.h:30</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a85574c36b0854c1f988a3be4f7db6b6d"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> scvt_qs8_f32 </td>
+ <td>(</td>
+ <td class="paramtype">float </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Convert a float to 8 bit fixed point. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>Input to convert </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the conversion float -> 8 bit fixed point </dd></dl>
+
+<p>Definition at line <a class="el" href="_fixed_point_8inl_source.xhtml#l00230">230</a> of file <a class="el" href="_fixed_point_8inl_source.xhtml">FixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="comment">// round_nearest_integer(a * 2^(fixed_point_position))</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a><span class="keyword">></span>(<span class="keyword">static_cast<</span><span class="keywordtype">float</span><span class="keyword">></span>(a) * (1 << fixed_point_position) + 0.5f);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a4c3f681c30c9398c45bc3cd5dc4f038a"><div class="ttname"><a href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">arm_compute::qint8_t</a></div><div class="ttdeci">int8_t qint8_t</div><div class="ttdoc">8 bit fixed point scalar value </div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_fixed_point_8h_source.xhtml#l00029">FixedPoint.h:29</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="ae39636f0e83dd3b854b89181a230216f"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> sdiv_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td>
+ <td class="paramname"><em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point scalar division </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 8 bit fixed point input </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 8 bit fixed point input </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point division. </dd></dl>
+
+<p>Definition at line <a class="el" href="_fixed_point_8inl_source.xhtml#l00163">163</a> of file <a class="el" href="_fixed_point_8inl_source.xhtml">FixedPoint.inl</a>.</p>
+
+<p>Referenced by <a class="el" href="_fixed_point_8inl_source.xhtml#l00192">slog_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <a class="code" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> temp = a << fixed_point_position;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">return</span> (<a class="code" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a>)(temp / b);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a1521eea74b97de8f2df9304e44179400"><div class="ttname"><a href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">arm_compute::qint16_t</a></div><div class="ttdeci">int16_t qint16_t</div><div class="ttdoc">16 bit fixed point scalar value </div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_fixed_point_8h_source.xhtml#l00030">FixedPoint.h:30</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a4c3f681c30c9398c45bc3cd5dc4f038a"><div class="ttname"><a href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">arm_compute::qint8_t</a></div><div class="ttdeci">int8_t qint8_t</div><div class="ttdoc">8 bit fixed point scalar value </div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_fixed_point_8h_source.xhtml#l00029">FixedPoint.h:29</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
<a class="anchor" id="a18ec57dffc5c26864be77318111dfb2a"></a>
<div class="memitem">
<div class="memproto">
@@ -6947,8 +10249,860 @@
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if the separation was successful </dd></dl>
-<p>Definition at line <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00359">359</a> of file <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml">Utils.h</a>.</p>
-<div class="fragment"><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> {</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  int32_t min_col = -1;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  int16_t min_col_val = -1;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> </div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keywordflow">for</span>(int32_t i = 0; i < size; ++i)</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  {</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keywordflow">if</span>(conv[i] != 0 && (min_col < 0 || abs(min_col_val) > abs(conv[i])))</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  {</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  min_col = i;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  min_col_val = conv[i];</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  }</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  }</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span> </div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="keywordflow">if</span>(min_col < 0)</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  {</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  }</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span> </div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keywordflow">for</span>(uint32_t j = 0; j < size; ++j)</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  {</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  conv_col[j] = conv[min_col + j * size];</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  }</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> </div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keywordflow">for</span>(uint32_t i = 0; i < size; i++)</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keywordflow">if</span>(static_cast<int>(i) == min_col)</div><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>  conv_row[i] = 1;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  }</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  {</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  int16_t coeff = conv[i] / conv[min_col];</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span> </div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keywordflow">for</span>(uint32_t j = 1; j < size; ++j)</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="keywordflow">if</span>(conv[i + j * size] != (conv_col[j] * coeff))</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  {</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  }</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> </div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  conv_row[i] = coeff;</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>  }</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span> </div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span> }</div></div><!-- fragment -->
+<p>Definition at line <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00365">365</a> of file <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml">Utils.h</a>.</p>
+
+<p>References <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00905">arm_compute::test::fixed_point_arithmetic::detail::abs()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> {</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  int32_t min_col = -1;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  int16_t min_col_val = -1;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span> </div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="keywordflow">for</span>(int32_t i = 0; i < size; ++i)</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  {</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="keywordflow">if</span>(conv[i] != 0 && (min_col < 0 || <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ae115fc750a92fb6a5e094998b56fcc56">abs</a>(min_col_val) > <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ae115fc750a92fb6a5e094998b56fcc56">abs</a>(conv[i])))</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  {</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  min_col = i;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  min_col_val = conv[i];</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  }</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  }</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> </div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keywordflow">if</span>(min_col < 0)</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  }</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span> </div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="keywordflow">for</span>(uint32_t j = 0; j < size; ++j)</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  {</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  conv_col[j] = conv[min_col + j * size];</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  }</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> </div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keywordflow">for</span>(uint32_t i = 0; i < size; i++)</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  {</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keywordflow">if</span>(static_cast<int>(i) == min_col)</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  {</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  conv_row[i] = 1;</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="keywordflow">else</span></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  {</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  int16_t coeff = conv[i] / conv[min_col];</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span> </div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="keywordflow">for</span>(uint32_t j = 1; j < size; ++j)</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  {</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="keywordflow">if</span>(conv[i + j * size] != (conv_col[j] * coeff))</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="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  }</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  }</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span> </div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  conv_row[i] = coeff;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  }</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  }</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> </div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span> }</div><div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_ae115fc750a92fb6a5e094998b56fcc56"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ae115fc750a92fb6a5e094998b56fcc56">arm_compute::test::fixed_point_arithmetic::detail::abs</a></div><div class="ttdeci">fixed_point< T > abs(fixed_point< T > x)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00905">FixedPoint.h:905</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="ad19446be52c2c162fa678b9ae236f445"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool set_data_type_if_unknown </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml">ITensorInfo</a> & </td>
+ <td class="paramname"><em>info</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> </td>
+ <td class="paramname"><em>data_type</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_helpers_8inl_source.xhtml#l00285">285</a> of file <a class="el" href="_helpers_8inl_source.xhtml">Helpers.inl</a>.</p>
+
+<p>References <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml#a7cfb31af63202568efef5214acfbf3ba">ITensorInfo::data_type()</a>, <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml#a4b622a0346ec30baf0b9a387e00c9ace">ITensorInfo::set_data_type()</a>, and <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a696b031073e74bf2cb98e5ef201d4aa3">UNKNOWN</a>.</p>
+
+<p>Referenced by <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml#l00449">compute_strides()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> {</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">if</span>(info.data_type() == DataType::UNKNOWN)</div><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>  info.set_data_type(data_type);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  }</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> </div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a0894ed18ca6f55d6053882676cc2c95c"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool set_fixed_point_position_if_zero </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml">ITensorInfo</a> & </td>
+ <td class="paramname"><em>info</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_helpers_8inl_source.xhtml#l00296">296</a> of file <a class="el" href="_helpers_8inl_source.xhtml">Helpers.inl</a>.</p>
+
+<p>References <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml#a7cfb31af63202568efef5214acfbf3ba">ITensorInfo::data_type()</a>, <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml#ab21a362740e892b6e913bd8db03b0e67">ITensorInfo::fixed_point_position()</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a48d877702a2957f5a932c43a357866f9">QS16</a>, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a11cde4d3551db3f9498d339a67189543">QS8</a>, and <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml#aec2c125ece3cc6593a0be7f1fef3d97f">ITensorInfo::set_fixed_point_position()</a>.</p>
+
+<p>Referenced by <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml#l00449">compute_strides()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00297"></a><span class="lineno"> 297</span> {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keywordflow">if</span>(info.fixed_point_position() == 0 && (info.data_type() == DataType::QS8 || info.data_type() == DataType::QS16))</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  {</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  info.set_fixed_point_position(fixed_point_position);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  }</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="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a8076ba239b6681067b6cfea7f773a39f"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool set_format_if_unknown </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml">ITensorInfo</a> & </td>
+ <td class="paramname"><em>info</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58">Format</a> </td>
+ <td class="paramname"><em>format</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_helpers_8inl_source.xhtml#l00274">274</a> of file <a class="el" href="_helpers_8inl_source.xhtml">Helpers.inl</a>.</p>
+
+<p>References <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml#a7cfb31af63202568efef5214acfbf3ba">ITensorInfo::data_type()</a>, <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml#a43bf980bc1ac27efa062386baa506380">ITensorInfo::set_format()</a>, and <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a696b031073e74bf2cb98e5ef201d4aa3">UNKNOWN</a>.</p>
+
+<p>Referenced by <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml#l00449">compute_strides()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">if</span>(info.data_type() == DataType::UNKNOWN)</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  {</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  info.set_format(format);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> </div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a9d1a839c51134b2ae171a2264c541b6f"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool set_shape_if_empty </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml">ITensorInfo</a> & </td>
+ <td class="paramname"><em>info</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarm__compute_1_1_tensor_shape.xhtml">TensorShape</a> & </td>
+ <td class="paramname"><em>shape</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_helpers_8inl_source.xhtml#l00263">263</a> of file <a class="el" href="_helpers_8inl_source.xhtml">Helpers.inl</a>.</p>
+
+<p>References <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml#a40deec9ef7e7c892bef6b11b4d81c38e">ITensorInfo::set_tensor_shape()</a>, <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml#a7c66505457d00ece3aa4b34cab80757d">ITensorInfo::tensor_shape()</a>, and <a class="el" href="_tensor_shape_8h_source.xhtml#l00106">TensorShape::total_size()</a>.</p>
+
+<p>Referenced by <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml#l00449">compute_strides()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> {</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordflow">if</span>(info.tensor_shape().total_size() == 0)</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  info.set_tensor_shape(shape);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  }</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> </div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a31f807a33c1ad8f1b92f6bdf8f8e960a"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> arm_compute::sexp_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point scalar exponential </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>8 bit fixed point input </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point exponential. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ab768d7001612a149c0bf695b773d659b"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> sinvsqrt_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point scalar inverse square root </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>8 bit fixed point input </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point inverse square root. </dd></dl>
+
+<p>Definition at line <a class="el" href="_fixed_point_8inl_source.xhtml#l00143">143</a> of file <a class="el" href="_fixed_point_8inl_source.xhtml">FixedPoint.inl</a>.</p>
+
+<p>References <a class="el" href="_fixed_point_8inl_source.xhtml#l00095">smul_qs8()</a>, and <a class="el" href="_fixed_point_8inl_source.xhtml#l00081">ssub_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <a class="code" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> shift = 8 - (fixed_point_position + (__builtin_clz(a) - 24));</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <a class="code" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> const_three = (3 << fixed_point_position);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <a class="code" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> temp = shift < 0 ? (a << -shift) : (a >> shift);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <a class="code" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> x2 = temp;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="comment">// We need three iterations to find the result</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 3; i++)</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <a class="code" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> three_minus_dx = <a class="code" href="namespacearm__compute.xhtml#ab97841950d268532e51f28a208ddafd4">ssub_qs8</a>(const_three, <a class="code" href="namespacearm__compute.xhtml#aec48f137adc904d648dd7eba0d828fab">smul_qs8</a>(temp, <a class="code" href="namespacearm__compute.xhtml#aec48f137adc904d648dd7eba0d828fab">smul_qs8</a>(x2, x2, fixed_point_position), fixed_point_position));</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  x2 = (<a class="code" href="namespacearm__compute.xhtml#aec48f137adc904d648dd7eba0d828fab">smul_qs8</a>(x2, three_minus_dx, fixed_point_position) >> 1);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  temp = shift < 0 ? (x2 << (-shift >> 1)) : (x2 >> (shift >> 1));</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">return</span> temp;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_aec48f137adc904d648dd7eba0d828fab"><div class="ttname"><a href="namespacearm__compute.xhtml#aec48f137adc904d648dd7eba0d828fab">arm_compute::smul_qs8</a></div><div class="ttdeci">qint8_t smul_qs8(qint8_t a, qint8_t b, int fixed_point_position)</div><div class="ttdoc">8 bit fixed point scalar multiply </div><div class="ttdef"><b>Definition:</b> <a href="_fixed_point_8inl_source.xhtml#l00095">FixedPoint.inl:95</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_ab97841950d268532e51f28a208ddafd4"><div class="ttname"><a href="namespacearm__compute.xhtml#ab97841950d268532e51f28a208ddafd4">arm_compute::ssub_qs8</a></div><div class="ttdeci">qint8_t ssub_qs8(qint8_t a, qint8_t b)</div><div class="ttdoc">8 bit fixed point scalar subtraction </div><div class="ttdef"><b>Definition:</b> <a href="_fixed_point_8inl_source.xhtml#l00081">FixedPoint.inl:81</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a4c3f681c30c9398c45bc3cd5dc4f038a"><div class="ttname"><a href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">arm_compute::qint8_t</a></div><div class="ttdeci">int8_t qint8_t</div><div class="ttdoc">8 bit fixed point scalar value </div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_fixed_point_8h_source.xhtml#l00029">FixedPoint.h:29</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a596a7e3c63f80e67ea7cb713e8fc9992"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> slog_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point scalar logarithm </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>8 bit fixed point input </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point logarithm. </dd></dl>
+
+<p>Definition at line <a class="el" href="_fixed_point_8inl_source.xhtml#l00192">192</a> of file <a class="el" href="_fixed_point_8inl_source.xhtml">FixedPoint.inl</a>.</p>
+
+<p>References <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa7fc56270e7a70fa81a5935b72eacbe29">A</a>, <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571">B</a>, <a class="el" href="_fixed_point_8inl_source.xhtml#l00058">sadd_qs8()</a>, <a class="el" href="_fixed_point_8inl_source.xhtml#l00163">sdiv_qs8()</a>, <a class="el" href="_fixed_point_8inl_source.xhtml#l00095">smul_qs8()</a>, <a class="el" href="_fixed_point_8inl_source.xhtml#l00063">sqadd_qs8()</a>, <a class="el" href="_fixed_point_8inl_source.xhtml#l00107">sqmul_qs8()</a>, and <a class="el" href="_fixed_point_8inl_source.xhtml#l00081">ssub_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="comment">// Constants</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <a class="code" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> const_one = (1 << fixed_point_position);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <a class="code" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> ln2 = (0x58 >> (7 - fixed_point_position));</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <a class="code" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa7fc56270e7a70fa81a5935b72eacbe29">A</a> = (0x5C >> (7 - fixed_point_position - 1));</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <a class="code" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571">B</a> = -(0x56 >> (7 - fixed_point_position));</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <a class="code" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> C = (0x29 >> (7 - fixed_point_position));</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <a class="code" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> D = -(0x0A >> (7 - fixed_point_position));</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">if</span>((const_one == a) || (a < 0))</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  {</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(a < const_one)</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">return</span> -<a class="code" href="namespacearm__compute.xhtml#a596a7e3c63f80e67ea7cb713e8fc9992">slog_qs8</a>(<a class="code" href="namespacearm__compute.xhtml#ae39636f0e83dd3b854b89181a230216f">sdiv_qs8</a>(const_one, a, fixed_point_position), fixed_point_position);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="comment">// Remove even powers of 2</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <a class="code" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> shift_val = 31 - __builtin_clz(a >> fixed_point_position);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  a >>= shift_val;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  a = <a class="code" href="namespacearm__compute.xhtml#ab97841950d268532e51f28a208ddafd4">ssub_qs8</a>(a, const_one);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="comment">// Polynomial expansion</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keyword">auto</span> sum = <a class="code" href="namespacearm__compute.xhtml#a532d90e007d0cb6f3d43107229c40c32">sqadd_qs8</a>(<a class="code" href="namespacearm__compute.xhtml#af0b73b0c4980a551d7cd4edec43ffd92">sqmul_qs8</a>(a, D, fixed_point_position), C);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  sum = <a class="code" href="namespacearm__compute.xhtml#a532d90e007d0cb6f3d43107229c40c32">sqadd_qs8</a>(<a class="code" href="namespacearm__compute.xhtml#af0b73b0c4980a551d7cd4edec43ffd92">sqmul_qs8</a>(a, sum, fixed_point_position), B);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  sum = <a class="code" href="namespacearm__compute.xhtml#a532d90e007d0cb6f3d43107229c40c32">sqadd_qs8</a>(<a class="code" href="namespacearm__compute.xhtml#af0b73b0c4980a551d7cd4edec43ffd92">sqmul_qs8</a>(a, sum, fixed_point_position), A);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  sum = <a class="code" href="namespacearm__compute.xhtml#af0b73b0c4980a551d7cd4edec43ffd92">sqmul_qs8</a>(a, sum, fixed_point_position);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> </div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute.xhtml#aec48f137adc904d648dd7eba0d828fab">smul_qs8</a>(<a class="code" href="namespacearm__compute.xhtml#aa8cee074ec68e2ae7830a9472efd8429">sadd_qs8</a>(sum, shift_val << fixed_point_position), ln2, fixed_point_position);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a1ce9b523fd4f3b5bbcadcd796183455aa7fc56270e7a70fa81a5935b72eacbe29"><div class="ttname"><a href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa7fc56270e7a70fa81a5935b72eacbe29">arm_compute::Channel::A</a></div><div class="ttdoc">Alpha channel. </div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_aec48f137adc904d648dd7eba0d828fab"><div class="ttname"><a href="namespacearm__compute.xhtml#aec48f137adc904d648dd7eba0d828fab">arm_compute::smul_qs8</a></div><div class="ttdeci">qint8_t smul_qs8(qint8_t a, qint8_t b, int fixed_point_position)</div><div class="ttdoc">8 bit fixed point scalar multiply </div><div class="ttdef"><b>Definition:</b> <a href="_fixed_point_8inl_source.xhtml#l00095">FixedPoint.inl:95</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_ab97841950d268532e51f28a208ddafd4"><div class="ttname"><a href="namespacearm__compute.xhtml#ab97841950d268532e51f28a208ddafd4">arm_compute::ssub_qs8</a></div><div class="ttdeci">qint8_t ssub_qs8(qint8_t a, qint8_t b)</div><div class="ttdoc">8 bit fixed point scalar subtraction </div><div class="ttdef"><b>Definition:</b> <a href="_fixed_point_8inl_source.xhtml#l00081">FixedPoint.inl:81</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571"><div class="ttname"><a href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571">arm_compute::Channel::B</a></div><div class="ttdoc">Blue channel. </div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_aa8cee074ec68e2ae7830a9472efd8429"><div class="ttname"><a href="namespacearm__compute.xhtml#aa8cee074ec68e2ae7830a9472efd8429">arm_compute::sadd_qs8</a></div><div class="ttdeci">qint8_t sadd_qs8(qint8_t a, qint8_t b)</div><div class="ttdoc">8 bit fixed point scalar add </div><div class="ttdef"><b>Definition:</b> <a href="_fixed_point_8inl_source.xhtml#l00058">FixedPoint.inl:58</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_ae39636f0e83dd3b854b89181a230216f"><div class="ttname"><a href="namespacearm__compute.xhtml#ae39636f0e83dd3b854b89181a230216f">arm_compute::sdiv_qs8</a></div><div class="ttdeci">qint8_t sdiv_qs8(qint8_t a, qint8_t b, int fixed_point_position)</div><div class="ttdoc">8 bit fixed point scalar division </div><div class="ttdef"><b>Definition:</b> <a href="_fixed_point_8inl_source.xhtml#l00163">FixedPoint.inl:163</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_af0b73b0c4980a551d7cd4edec43ffd92"><div class="ttname"><a href="namespacearm__compute.xhtml#af0b73b0c4980a551d7cd4edec43ffd92">arm_compute::sqmul_qs8</a></div><div class="ttdeci">qint8_t sqmul_qs8(qint8_t a, qint8_t b, int fixed_point_position)</div><div class="ttdoc">8 bit fixed point scalar saturating multiply </div><div class="ttdef"><b>Definition:</b> <a href="_fixed_point_8inl_source.xhtml#l00107">FixedPoint.inl:107</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a596a7e3c63f80e67ea7cb713e8fc9992"><div class="ttname"><a href="namespacearm__compute.xhtml#a596a7e3c63f80e67ea7cb713e8fc9992">arm_compute::slog_qs8</a></div><div class="ttdeci">qint8_t slog_qs8(qint8_t a, int fixed_point_position)</div><div class="ttdoc">8 bit fixed point scalar logarithm </div><div class="ttdef"><b>Definition:</b> <a href="_fixed_point_8inl_source.xhtml#l00192">FixedPoint.inl:192</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a4c3f681c30c9398c45bc3cd5dc4f038a"><div class="ttname"><a href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">arm_compute::qint8_t</a></div><div class="ttdeci">int8_t qint8_t</div><div class="ttdoc">8 bit fixed point scalar value </div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_fixed_point_8h_source.xhtml#l00029">FixedPoint.h:29</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a532d90e007d0cb6f3d43107229c40c32"><div class="ttname"><a href="namespacearm__compute.xhtml#a532d90e007d0cb6f3d43107229c40c32">arm_compute::sqadd_qs8</a></div><div class="ttdeci">qint8_t sqadd_qs8(qint8_t a, qint8_t b)</div><div class="ttdoc">8 bit fixed point scalar saturating add </div><div class="ttdef"><b>Definition:</b> <a href="_fixed_point_8inl_source.xhtml#l00063">FixedPoint.inl:63</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="aec48f137adc904d648dd7eba0d828fab"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> smul_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td>
+ <td class="paramname"><em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point scalar multiply </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 8 bit fixed point input </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 8 bit fixed point input </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point multiplication. </dd></dl>
+
+<p>Definition at line <a class="el" href="_fixed_point_8inl_source.xhtml#l00095">95</a> of file <a class="el" href="_fixed_point_8inl_source.xhtml">FixedPoint.inl</a>.</p>
+
+<p>Referenced by <a class="el" href="_fixed_point_8inl_source.xhtml#l00143">sinvsqrt_qs8()</a>, and <a class="el" href="_fixed_point_8inl_source.xhtml#l00192">slog_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> round_up_const = (1 << (fixed_point_position - 1));</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <a class="code" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> tmp = <span class="keyword">static_cast<</span><a class="code" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a><span class="keyword">></span>(a) * static_cast<qint16_t>(b);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="comment">// Rounding up</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  tmp += round_up_const;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a><span class="keyword">></span>(tmp >> fixed_point_position);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a1521eea74b97de8f2df9304e44179400"><div class="ttname"><a href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">arm_compute::qint16_t</a></div><div class="ttdeci">int16_t qint16_t</div><div class="ttdoc">16 bit fixed point scalar value </div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_fixed_point_8h_source.xhtml#l00030">FixedPoint.h:30</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a4c3f681c30c9398c45bc3cd5dc4f038a"><div class="ttname"><a href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">arm_compute::qint8_t</a></div><div class="ttdeci">int8_t qint8_t</div><div class="ttdoc">8 bit fixed point scalar value </div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_fixed_point_8h_source.xhtml#l00029">FixedPoint.h:29</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a45669fcc0f31fce521179510e85dcb62"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> sqadd_qs16 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> </td>
+ <td class="paramname"><em>b</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>16 bit fixed point scalar saturating add </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 16 bit fixed point input </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 16 bit fixed point input</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 16 bit fixed point addition. The result is saturated in case of overflow </dd></dl>
+
+<p>Definition at line <a class="el" href="_fixed_point_8inl_source.xhtml#l00072">72</a> of file <a class="el" href="_fixed_point_8inl_source.xhtml">FixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="comment">// We need to store the temporary result in qint16_t otherwise we cannot evaluate the overflow</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="namespacearm__compute.xhtml#aa06c95f9976f3729316d689b4419089f">qint32_t</a> tmp = (<span class="keyword">static_cast<</span><a class="code" href="namespacearm__compute.xhtml#aa06c95f9976f3729316d689b4419089f">qint32_t</a><span class="keyword">></span>(a) + static_cast<qint32_t>(b));</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="comment">// Saturate the result in case of overflow and cast to qint16_t</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">return</span> saturate_convert<qint32_t, qint16_t>(tmp);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_aa06c95f9976f3729316d689b4419089f"><div class="ttname"><a href="namespacearm__compute.xhtml#aa06c95f9976f3729316d689b4419089f">arm_compute::qint32_t</a></div><div class="ttdeci">int32_t qint32_t</div><div class="ttdoc">32 bit fixed point scalar value </div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_fixed_point_8h_source.xhtml#l00031">FixedPoint.h:31</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a532d90e007d0cb6f3d43107229c40c32"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> sqadd_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td>
+ <td class="paramname"><em>b</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point scalar saturating add </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 8 bit fixed point input </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 8 bit fixed point input</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point addition. The result is saturated in case of overflow </dd></dl>
+
+<p>Definition at line <a class="el" href="_fixed_point_8inl_source.xhtml#l00063">63</a> of file <a class="el" href="_fixed_point_8inl_source.xhtml">FixedPoint.inl</a>.</p>
+
+<p>Referenced by <a class="el" href="_tensor_operations_8h_source.xhtml#l01123">arm_compute::test::validation::tensor_operations::pooling_layer()</a>, <a class="el" href="_fixed_point_8inl_source.xhtml#l00192">slog_qs8()</a>, and <a class="el" href="_fixed_point_8inl_source.xhtml#l00169">sqexp_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">// We need to store the temporary result in qint16_t otherwise we cannot evaluate the overflow</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> tmp = (<span class="keyword">static_cast<</span><a class="code" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a><span class="keyword">></span>(a) + static_cast<qint16_t>(b));</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="comment">// Saturate the result in case of overflow and cast to qint8_t</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">return</span> saturate_convert<qint16_t, qint8_t>(tmp);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a1521eea74b97de8f2df9304e44179400"><div class="ttname"><a href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">arm_compute::qint16_t</a></div><div class="ttdeci">int16_t qint16_t</div><div class="ttdoc">16 bit fixed point scalar value </div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_fixed_point_8h_source.xhtml#l00030">FixedPoint.h:30</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a6458ccaf13f1c225d6b60672754f2c72"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> arm_compute::sqexp_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_fixed_point_8inl_source.xhtml#l00169">169</a> of file <a class="el" href="_fixed_point_8inl_source.xhtml">FixedPoint.inl</a>.</p>
+
+<p>References <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa7fc56270e7a70fa81a5935b72eacbe29">A</a>, <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571">B</a>, <a class="el" href="_fixed_point_8inl_source.xhtml#l00053">sabs_qs8()</a>, <a class="el" href="_fixed_point_8inl_source.xhtml#l00063">sqadd_qs8()</a>, <a class="el" href="_fixed_point_8inl_source.xhtml#l00107">sqmul_qs8()</a>, <a class="el" href="_fixed_point_8inl_source.xhtml#l00046">sqshl_qs8()</a>, and <a class="el" href="_fixed_point_8inl_source.xhtml#l00086">sqsub_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="comment">// Constants</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <a class="code" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> const_one = (1 << fixed_point_position);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <a class="code" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> ln2 = ((0x58 >> (6 - fixed_point_position)) + 1) >> 1;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <a class="code" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> inv_ln2 = (((0x38 >> (6 - fixed_point_position)) + 1) >> 1) | const_one;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <a class="code" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa7fc56270e7a70fa81a5935b72eacbe29">A</a> = ((0x7F >> (6 - fixed_point_position)) + 1) >> 1;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <a class="code" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571">B</a> = ((0x3F >> (6 - fixed_point_position)) + 1) >> 1;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <a class="code" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> C = ((0x16 >> (6 - fixed_point_position)) + 1) >> 1;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <a class="code" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> D = ((0x05 >> (6 - fixed_point_position)) + 1) >> 1;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="comment">// Polynomial expansion</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordtype">int</span> dec_a = (<a class="code" href="namespacearm__compute.xhtml#af0b73b0c4980a551d7cd4edec43ffd92">sqmul_qs8</a>(a, inv_ln2, fixed_point_position) >> fixed_point_position);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <a class="code" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> alpha = <a class="code" href="namespacearm__compute.xhtml#a43315c66c4d00207f70143233b189085">sabs_qs8</a>(<a class="code" href="namespacearm__compute.xhtml#ae74bbb6e25cc1b774428722b2faad00c">sqsub_qs8</a>(a, <a class="code" href="namespacearm__compute.xhtml#af0b73b0c4980a551d7cd4edec43ffd92">sqmul_qs8</a>(ln2, <a class="code" href="namespacearm__compute.xhtml#a203882febb616f5468d1b63b60ffb331">sqshl_qs8</a>(dec_a, fixed_point_position), fixed_point_position)));</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <a class="code" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> sum = <a class="code" href="namespacearm__compute.xhtml#a532d90e007d0cb6f3d43107229c40c32">sqadd_qs8</a>(<a class="code" href="namespacearm__compute.xhtml#af0b73b0c4980a551d7cd4edec43ffd92">sqmul_qs8</a>(alpha, D, fixed_point_position), C);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  sum = <a class="code" href="namespacearm__compute.xhtml#a532d90e007d0cb6f3d43107229c40c32">sqadd_qs8</a>(<a class="code" href="namespacearm__compute.xhtml#af0b73b0c4980a551d7cd4edec43ffd92">sqmul_qs8</a>(alpha, sum, fixed_point_position), B);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  sum = <a class="code" href="namespacearm__compute.xhtml#a532d90e007d0cb6f3d43107229c40c32">sqadd_qs8</a>(<a class="code" href="namespacearm__compute.xhtml#af0b73b0c4980a551d7cd4edec43ffd92">sqmul_qs8</a>(alpha, sum, fixed_point_position), A);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  sum = <a class="code" href="namespacearm__compute.xhtml#af0b73b0c4980a551d7cd4edec43ffd92">sqmul_qs8</a>(alpha, sum, fixed_point_position);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  sum = <a class="code" href="namespacearm__compute.xhtml#a532d90e007d0cb6f3d43107229c40c32">sqadd_qs8</a>(sum, const_one);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">return</span> (dec_a < 0) ? (sum >> -dec_a) : <a class="code" href="namespacearm__compute.xhtml#a203882febb616f5468d1b63b60ffb331">sqshl_qs8</a>(sum, dec_a);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a1ce9b523fd4f3b5bbcadcd796183455aa7fc56270e7a70fa81a5935b72eacbe29"><div class="ttname"><a href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa7fc56270e7a70fa81a5935b72eacbe29">arm_compute::Channel::A</a></div><div class="ttdoc">Alpha channel. </div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571"><div class="ttname"><a href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571">arm_compute::Channel::B</a></div><div class="ttdoc">Blue channel. </div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a203882febb616f5468d1b63b60ffb331"><div class="ttname"><a href="namespacearm__compute.xhtml#a203882febb616f5468d1b63b60ffb331">arm_compute::sqshl_qs8</a></div><div class="ttdeci">qint8_t sqshl_qs8(qint8_t a, int shift)</div><div class="ttdoc">8 bit fixed point scalar saturating shift left </div><div class="ttdef"><b>Definition:</b> <a href="_fixed_point_8inl_source.xhtml#l00046">FixedPoint.inl:46</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_ae74bbb6e25cc1b774428722b2faad00c"><div class="ttname"><a href="namespacearm__compute.xhtml#ae74bbb6e25cc1b774428722b2faad00c">arm_compute::sqsub_qs8</a></div><div class="ttdeci">qint8_t sqsub_qs8(qint8_t a, qint8_t b)</div><div class="ttdoc">8 bit fixed point scalar saturating subtraction </div><div class="ttdef"><b>Definition:</b> <a href="_fixed_point_8inl_source.xhtml#l00086">FixedPoint.inl:86</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_af0b73b0c4980a551d7cd4edec43ffd92"><div class="ttname"><a href="namespacearm__compute.xhtml#af0b73b0c4980a551d7cd4edec43ffd92">arm_compute::sqmul_qs8</a></div><div class="ttdeci">qint8_t sqmul_qs8(qint8_t a, qint8_t b, int fixed_point_position)</div><div class="ttdoc">8 bit fixed point scalar saturating multiply </div><div class="ttdef"><b>Definition:</b> <a href="_fixed_point_8inl_source.xhtml#l00107">FixedPoint.inl:107</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a4c3f681c30c9398c45bc3cd5dc4f038a"><div class="ttname"><a href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">arm_compute::qint8_t</a></div><div class="ttdeci">int8_t qint8_t</div><div class="ttdoc">8 bit fixed point scalar value </div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_fixed_point_8h_source.xhtml#l00029">FixedPoint.h:29</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a43315c66c4d00207f70143233b189085"><div class="ttname"><a href="namespacearm__compute.xhtml#a43315c66c4d00207f70143233b189085">arm_compute::sabs_qs8</a></div><div class="ttdeci">qint8_t sabs_qs8(qint8_t a)</div><div class="ttdoc">8 bit fixed point scalar absolute value </div><div class="ttdef"><b>Definition:</b> <a href="_fixed_point_8inl_source.xhtml#l00053">FixedPoint.inl:53</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a532d90e007d0cb6f3d43107229c40c32"><div class="ttname"><a href="namespacearm__compute.xhtml#a532d90e007d0cb6f3d43107229c40c32">arm_compute::sqadd_qs8</a></div><div class="ttdeci">qint8_t sqadd_qs8(qint8_t a, qint8_t b)</div><div class="ttdoc">8 bit fixed point scalar saturating add </div><div class="ttdef"><b>Definition:</b> <a href="_fixed_point_8inl_source.xhtml#l00063">FixedPoint.inl:63</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="ad555b251940cba2ca1c6eb168f0bbea4"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> sqmovn_qs16 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> </td>
+ <td class="paramname"><em>a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Scalar saturating move and narrow. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>Input to convert to 8 bit fixed point</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The narrowing conversion to 8 bit </dd></dl>
+
+<p>Definition at line <a class="el" href="_fixed_point_8inl_source.xhtml#l00247">247</a> of file <a class="el" href="_fixed_point_8inl_source.xhtml">FixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="comment">// Saturate the result in case of overflow and cast to qint8_t</span></div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">return</span> saturate_convert<qint16_t, qint8_t>(a);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a55c8a365b4242664f8c0f19e91bcee92"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> sqmul_qs16 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> </td>
+ <td class="paramname"><em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>16 bit fixed point scalar saturating multiply </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 16 bit fixed point input </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 16 bit fixed point input </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 16 bit fixed point multiplication. The result is saturated in case of overflow </dd></dl>
+
+<p>Definition at line <a class="el" href="_fixed_point_8inl_source.xhtml#l00119">119</a> of file <a class="el" href="_fixed_point_8inl_source.xhtml">FixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#aa06c95f9976f3729316d689b4419089f">qint32_t</a> round_up_const = (1 << (fixed_point_position - 1));</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <a class="code" href="namespacearm__compute.xhtml#aa06c95f9976f3729316d689b4419089f">qint32_t</a> tmp = <span class="keyword">static_cast<</span><a class="code" href="namespacearm__compute.xhtml#aa06c95f9976f3729316d689b4419089f">qint32_t</a><span class="keyword">></span>(a) * static_cast<qint32_t>(b);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="comment">// Rounding up</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  tmp += round_up_const;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">return</span> saturate_convert<qint32_t, qint16_t>(tmp >> fixed_point_position);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_aa06c95f9976f3729316d689b4419089f"><div class="ttname"><a href="namespacearm__compute.xhtml#aa06c95f9976f3729316d689b4419089f">arm_compute::qint32_t</a></div><div class="ttdeci">int32_t qint32_t</div><div class="ttdoc">32 bit fixed point scalar value </div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_fixed_point_8h_source.xhtml#l00031">FixedPoint.h:31</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="af0b73b0c4980a551d7cd4edec43ffd92"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> sqmul_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td>
+ <td class="paramname"><em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point scalar saturating multiply </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 8 bit fixed point input </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 8 bit fixed point input </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point multiplication. The result is saturated in case of overflow </dd></dl>
+
+<p>Definition at line <a class="el" href="_fixed_point_8inl_source.xhtml#l00107">107</a> of file <a class="el" href="_fixed_point_8inl_source.xhtml">FixedPoint.inl</a>.</p>
+
+<p>Referenced by <a class="el" href="_tensor_operations_8h_source.xhtml#l01123">arm_compute::test::validation::tensor_operations::pooling_layer()</a>, <a class="el" href="_fixed_point_8inl_source.xhtml#l00192">slog_qs8()</a>, and <a class="el" href="_fixed_point_8inl_source.xhtml#l00169">sqexp_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> round_up_const = (1 << (fixed_point_position - 1));</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <a class="code" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> tmp = <span class="keyword">static_cast<</span><a class="code" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a><span class="keyword">></span>(a) * static_cast<qint16_t>(b);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="comment">// Rounding up</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  tmp += round_up_const;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">return</span> saturate_convert<qint16_t, qint8_t>(tmp >> fixed_point_position);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a1521eea74b97de8f2df9304e44179400"><div class="ttname"><a href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">arm_compute::qint16_t</a></div><div class="ttdeci">int16_t qint16_t</div><div class="ttdoc">16 bit fixed point scalar value </div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_fixed_point_8h_source.xhtml#l00030">FixedPoint.h:30</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a0721e062e6d7a90f07fd08aeda5e7eda"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> sqmull_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td>
+ <td class="paramname"><em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point scalar multiply long </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 8 bit fixed point input </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 8 bit fixed point input </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point multiplication long. The result is saturated in case of overflow </dd></dl>
+
+<p>Definition at line <a class="el" href="_fixed_point_8inl_source.xhtml#l00131">131</a> of file <a class="el" href="_fixed_point_8inl_source.xhtml">FixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> round_up_const = (1 << (fixed_point_position - 1));</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <a class="code" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> tmp = <span class="keyword">static_cast<</span><a class="code" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a><span class="keyword">></span>(a) * static_cast<qint16_t>(b);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="comment">// Rounding up</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  tmp += round_up_const;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">return</span> tmp >> fixed_point_position;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a1521eea74b97de8f2df9304e44179400"><div class="ttname"><a href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">arm_compute::qint16_t</a></div><div class="ttdeci">int16_t qint16_t</div><div class="ttdoc">16 bit fixed point scalar value </div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_fixed_point_8h_source.xhtml#l00030">FixedPoint.h:30</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a203882febb616f5468d1b63b60ffb331"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> sqshl_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>shift</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point scalar saturating shift left </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 8 bit fixed point input </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">shift</td><td>Shift amount</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point shift. The result is saturated in case of overflow </dd></dl>
+
+<p>Definition at line <a class="el" href="_fixed_point_8inl_source.xhtml#l00046">46</a> of file <a class="el" href="_fixed_point_8inl_source.xhtml">FixedPoint.inl</a>.</p>
+
+<p>Referenced by <a class="el" href="_fixed_point_8inl_source.xhtml#l00169">sqexp_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> tmp = <span class="keyword">static_cast<</span><a class="code" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a><span class="keyword">></span>(a) << shift;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="comment">// Saturate the result in case of overflow and cast to qint8_t</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">return</span> saturate_convert<qint16_t, qint8_t>(tmp);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a1521eea74b97de8f2df9304e44179400"><div class="ttname"><a href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">arm_compute::qint16_t</a></div><div class="ttdeci">int16_t qint16_t</div><div class="ttdoc">16 bit fixed point scalar value </div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_fixed_point_8h_source.xhtml#l00030">FixedPoint.h:30</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="ae74bbb6e25cc1b774428722b2faad00c"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> sqsub_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td>
+ <td class="paramname"><em>b</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point scalar saturating subtraction </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 8 bit fixed point input </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 8 bit fixed point input</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point subtraction. The result is saturated in case of overflow </dd></dl>
+
+<p>Definition at line <a class="el" href="_fixed_point_8inl_source.xhtml#l00086">86</a> of file <a class="el" href="_fixed_point_8inl_source.xhtml">FixedPoint.inl</a>.</p>
+
+<p>Referenced by <a class="el" href="_fixed_point_8inl_source.xhtml#l00169">sqexp_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="comment">// We need to store the temporary result in uint16_t otherwise we cannot evaluate the overflow</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <a class="code" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> tmp = <span class="keyword">static_cast<</span><a class="code" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a><span class="keyword">></span>(a) - static_cast<qint16_t>(b);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="comment">// Saturate the result in case of overflow and cast to qint8_t</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">return</span> saturate_convert<qint16_t, qint8_t>(tmp);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a1521eea74b97de8f2df9304e44179400"><div class="ttname"><a href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">arm_compute::qint16_t</a></div><div class="ttdeci">int16_t qint16_t</div><div class="ttdoc">16 bit fixed point scalar value </div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_fixed_point_8h_source.xhtml#l00030">FixedPoint.h:30</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="ab97841950d268532e51f28a208ddafd4"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> ssub_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td>
+ <td class="paramname"><em>b</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point scalar subtraction </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 8 bit fixed point input </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 8 bit fixed point input</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point subtraction </dd></dl>
+
+<p>Definition at line <a class="el" href="_fixed_point_8inl_source.xhtml#l00081">81</a> of file <a class="el" href="_fixed_point_8inl_source.xhtml">FixedPoint.inl</a>.</p>
+
+<p>Referenced by <a class="el" href="_fixed_point_8inl_source.xhtml#l00143">sinvsqrt_qs8()</a>, and <a class="el" href="_fixed_point_8inl_source.xhtml#l00192">slog_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">return</span> a - b;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> }</div></div><!-- fragment -->
</div>
</div>
<a class="anchor" id="ac955c978e18cc9bf6daea31f13076fba"></a>
@@ -6974,7 +11128,7 @@
</dl>
<dl class="section return"><dt>Returns</dt><dd>The string describing the activation function. </dd></dl>
-<p>Referenced by <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00491">data_type_for_convolution_matrix()</a>.</p>
+<p>Referenced by <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00497">data_type_for_convolution_matrix()</a>.</p>
</div>
</div>
@@ -7001,7 +11155,7 @@
</dl>
<dl class="section return"><dt>Returns</dt><dd>The string describing the border mode. </dd></dl>
-<p>Referenced by <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00491">data_type_for_convolution_matrix()</a>.</p>
+<p>Referenced by <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00497">data_type_for_convolution_matrix()</a>.</p>
</div>
</div>
@@ -7028,7 +11182,7 @@
</dl>
<dl class="section return"><dt>Returns</dt><dd>The string describing the channel. </dd></dl>
-<p>Referenced by <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00491">data_type_for_convolution_matrix()</a>.</p>
+<p>Referenced by <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00497">data_type_for_convolution_matrix()</a>.</p>
</div>
</div>
@@ -7055,7 +11209,7 @@
</dl>
<dl class="section return"><dt>Returns</dt><dd>The string describing the data type. </dd></dl>
-<p>Referenced by <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00491">data_type_for_convolution_matrix()</a>, and <a class="el" href="_validate_8h_source.xhtml#l00227">error_on_data_type_not_in()</a>.</p>
+<p>Referenced by <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00497">data_type_for_convolution_matrix()</a>, <a class="el" href="_validate_8h_source.xhtml#l00371">error_on_data_type_not_in()</a>, and <a class="el" href="_validate_8h_source.xhtml#l00549">error_on_value_not_representable_in_fixed_point()</a>.</p>
</div>
</div>
@@ -7082,7 +11236,7 @@
</dl>
<dl class="section return"><dt>Returns</dt><dd>The string describing the format. </dd></dl>
-<p>Referenced by <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00491">data_type_for_convolution_matrix()</a>, and <a class="el" href="_validate_8h_source.xhtml#l00196">error_on_format_not_in()</a>.</p>
+<p>Referenced by <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00497">data_type_for_convolution_matrix()</a>, and <a class="el" href="_validate_8h_source.xhtml#l00340">error_on_format_not_in()</a>.</p>
</div>
</div>
@@ -7109,7 +11263,7 @@
</dl>
<dl class="section return"><dt>Returns</dt><dd>The string describing the interpolation policy. </dd></dl>
-<p>Referenced by <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00491">data_type_for_convolution_matrix()</a>.</p>
+<p>Referenced by <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00497">data_type_for_convolution_matrix()</a>.</p>
</div>
</div>
@@ -7136,7 +11290,7 @@
</dl>
<dl class="section return"><dt>Returns</dt><dd>The string describing the matrix pattern. </dd></dl>
-<p>Referenced by <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00491">data_type_for_convolution_matrix()</a>.</p>
+<p>Referenced by <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00497">data_type_for_convolution_matrix()</a>.</p>
</div>
</div>
@@ -7163,7 +11317,84 @@
</dl>
<dl class="section return"><dt>Returns</dt><dd>The string describing the non linear function. </dd></dl>
-<p>Referenced by <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00491">data_type_for_convolution_matrix()</a>.</p>
+<p>Referenced by <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00497">data_type_for_convolution_matrix()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="afb5698af5404d5d11e3516c87b6e7041"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const std::string& arm_compute::string_from_norm_type </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ad4bb8dabdbf8ad75e34220cc666b59ca">NormType</a> </td>
+ <td class="paramname"><em>type</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Translates a given normalization type to a string. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td><a class="el" href="namespacearm__compute.xhtml#ad4bb8dabdbf8ad75e34220cc666b59ca">NormType</a> to be translated to string.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The string describing the normalization type. </dd></dl>
+
+<p>Referenced by <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00497">data_type_for_convolution_matrix()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa5191117dc677a74552769b87131b1b6"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const std::string& arm_compute::string_from_scheduler_type </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarm__compute_1_1_scheduler.xhtml#a1d1cfd8ffb84e947f82999c682b666a7">Scheduler::Type</a> </td>
+ <td class="paramname"><em>t</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Convert a <a class="el" href="classarm__compute_1_1_scheduler.xhtml#a1d1cfd8ffb84e947f82999c682b666a7">Scheduler::Type</a> into a string. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">t</td><td><a class="el" href="classarm__compute_1_1_scheduler.xhtml#a1d1cfd8ffb84e947f82999c682b666a7">Scheduler::Type</a> to be translated to string.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The string describing the scheduler type. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="afab814721e78cbfc34e7e7fe2874fa56"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const std::string& arm_compute::string_from_target </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a735ac6c2a02e320969625308810444f3">GPUTarget</a> </td>
+ <td class="paramname"><em>target</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Translates a given gpu device target to string. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">target</td><td>Given gpu target.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The string describing the target. </dd></dl>
</div>
</div>
@@ -7202,10 +11433,173 @@
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if the window has been changed. Changes to the padding do not influence the returned value. </dd></dl>
-<p>Definition at line <a class="el" href="_helpers_8h_source.xhtml#l00307">307</a> of file <a class="el" href="_helpers_8h_source.xhtml">Helpers.h</a>.</p>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml#l00335">335</a> of file <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml">Helpers.h</a>.</p>
-<p>References <a class="el" href="namespacearm__compute.xhtml#aa8063930734453501dbe41f60c5a89d9">calculate_max_window()</a>, <a class="el" href="namespacearm__compute.xhtml#a0451630695335182319ee53d785d0715">calculate_max_window_horizontal()</a>, <a class="el" href="classarm__compute_1_1_i_access_window.xhtml#abd645498a7cbaebd88b257083e459dd6">IAccessWindow::update_padding_if_needed()</a>, and <a class="el" href="classarm__compute_1_1_i_access_window.xhtml#a5b6940395e0168f3f00da892ded537aa">IAccessWindow::update_window_if_needed()</a>.</p>
-<div class="fragment"><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordtype">bool</span> window_changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  for_each([&](<span class="keyword">const</span> IAccessWindow & w)</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  window_changed |= w.update_window_if_needed(win);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  },</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  patterns...);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> </div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keywordtype">bool</span> padding_changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> </div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  for_each([&](<span class="keyword">const</span> IAccessWindow & w)</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  {</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  padding_changed |= w.update_padding_if_needed(win);</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  },</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  patterns...);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> </div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keywordflow">return</span> window_changed;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> }</div></div><!-- fragment -->
+<p>References <a class="el" href="namespacearm__compute.xhtml#afcdda83b6a85d5798f08d92c0e235e2e">calculate_max_enlarged_window()</a>, <a class="el" href="namespacearm__compute.xhtml#aa2117aef4381edbdf81e17ec088df7f1">calculate_max_window()</a>, <a class="el" href="namespacearm__compute.xhtml#a47456b4d520aee1cba80bf6e20f6685a">calculate_max_window_horizontal()</a>, <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml#l00200">for_each()</a>, <a class="el" href="classarm__compute_1_1_i_access_window.xhtml#abd645498a7cbaebd88b257083e459dd6">IAccessWindow::update_padding_if_needed()</a>, and <a class="el" href="classarm__compute_1_1_i_access_window.xhtml#a5b6940395e0168f3f00da892ded537aa">IAccessWindow::update_window_if_needed()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> {</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordtype">bool</span> window_changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> </div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <a class="code" href="namespacearm__compute.xhtml#ab951ff3c9484cd4b243344b3a0f12d95">for_each</a>([&](<span class="keyword">const</span> IAccessWindow & w)</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  {</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  window_changed |= w.update_window_if_needed(win);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  },</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  patterns...);</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> </div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="keywordtype">bool</span> padding_changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> </div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <a class="code" href="namespacearm__compute.xhtml#ab951ff3c9484cd4b243344b3a0f12d95">for_each</a>([&](<span class="keyword">const</span> IAccessWindow & w)</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  {</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  padding_changed |= w.update_padding_if_needed(win);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  },</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  patterns...);</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="keywordflow">return</span> window_changed;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_ab951ff3c9484cd4b243344b3a0f12d95"><div class="ttname"><a href="namespacearm__compute.xhtml#ab951ff3c9484cd4b243344b3a0f12d95">arm_compute::for_each</a></div><div class="ttdeci">void for_each(F &&func, T &&arg, Ts &&...args)</div><div class="ttdoc">Call the function for each of the arguments. </div><div class="ttdef"><b>Definition:</b> <a href="arm__compute_2core_2_helpers_8h_source.xhtml#l00211">Helpers.h:211</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="ab62f4e080614df358423180767cffefd"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> vabs_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Absolute value of 8 bit fixed point vector (8 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>8 bit fixed point input vector</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point vector absolute value </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00169">169</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">return</span> vabs_s8(a);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a3e4c45da2bef323158955d7c3b9d148d"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> vabsq_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Absolute value of 8 bit fixed point vector (16 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>8 bit fixed point input vector</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point vector absolute value </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00174">174</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">return</span> vabsq_s8(a);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="ad91fc981c1b7b04a1975de3aefc6a4f7"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> vadd_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>b</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point vector add (8 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 8 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 8 bit fixed point input vector</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point vector addition </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00219">219</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> {</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">return</span> vadd_s8(a, b);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a30eeb53208a2f67d4b0cf73a81b09467"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> vaddq_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>b</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point vector add (16 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 8 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 8 bit fixed point input vector</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point vector addition </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00224">224</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">return</span> vaddq_s8(a, b);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> }</div></div><!-- fragment -->
</div>
</div>
<a class="anchor" id="ae350823b5c93227dc33f1105ece06d68"></a>
@@ -7231,11 +11625,11 @@
</dl>
<dl class="section return"><dt>Returns</dt><dd>Value represented as a string </dd></dl>
-<p>Definition at line <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00087">87</a> of file <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml">Utils.h</a>.</p>
-<div class="fragment"><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keyword">const </span>std::ostringstream &<span class="keyword">></span>(std::ostringstream() << val).str();</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> }</div></div><!-- fragment -->
+<p>Definition at line <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml#l00088">88</a> of file <a class="el" href="arm__compute_2core_2_utils_8h_source.xhtml">Utils.h</a>.</p>
+<div class="fragment"><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keyword">const </span>std::ostringstream &<span class="keyword">></span>(std::ostringstream() << val).str();</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> }</div></div><!-- fragment -->
</div>
</div>
-<a class="anchor" id="aa197f574e5effe492aa8034651467eb3"></a>
+<a class="anchor" id="a14a78befffd5c48b43554fdc28d654ff"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
@@ -7243,9 +11637,509 @@
<td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname">float32x4_t arm_compute::vexpq_f32 </td>
+ <td class="memname">float32x4x2_t vcvt_f32_qs8 </td>
<td>(</td>
- <td class="paramtype">const float32x4_t & </td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Convert a 8 bit fixed point vector with 8 elements to a float vector with 4x2 elements. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>8 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the conversion 8 bit fixed point -> float32x2x4 </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00534">534</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00535"></a><span class="lineno"> 535</span> {</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="keyword">const</span> float32x4_t pow2 = vdupq_n_f32(1.0f / (1 << fixed_point_position));</div><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="keyword">const</span> int16x8_t res_s16 = vmovl_s8(a);</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span> </div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <span class="keyword">const</span> int32x4x2_t res_s32 =</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  {</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  {</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  vmovl_s16(vget_low_s16(res_s16)),</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  vmovl_s16(vget_high_s16(res_s16))</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>  };</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span> </div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  float32x4x2_t res_f32 =</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>  {</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  vcvtq_f32_s32(res_s32.val[0]),</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  vcvtq_f32_s32(res_s32.val[1])</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  }</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  };</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span> </div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  res_f32.val[0] = vmulq_f32(res_f32.val[0], pow2);</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  res_f32.val[1] = vmulq_f32(res_f32.val[1], pow2);</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span> </div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="keywordflow">return</span> res_f32;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a9f1ff9f119f659c10a90d0a9091811b0"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> vcvt_qs8_f32 </td>
+ <td>(</td>
+ <td class="paramtype">const float32x4x2_t & </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Convert a float vector with 4x2 elements to 8 bit fixed point vector with 8 elements. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>Float input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the conversion float -> 8 bit fixed point </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00466">466</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00467"></a><span class="lineno"> 467</span> {</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keyword">const</span> float32x4_t pow2 = vdupq_n_f32(static_cast<float>(1 << fixed_point_position));</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span> </div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  float32x4x2_t res_f32 =</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  {</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  {</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  vdupq_n_f32(0.5f),</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  vdupq_n_f32(0.5f)</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  }</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  };</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span> </div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  res_f32.val[0] = vmlaq_f32(res_f32.val[0], a.val[0], pow2);</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  res_f32.val[1] = vmlaq_f32(res_f32.val[1], a.val[1], pow2);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> </div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="keyword">const</span> int32x4x2_t res_s32 =</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  {</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  {</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  vcvtq_s32_f32(res_f32.val[0]),</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  vcvtq_s32_f32(res_f32.val[1]),</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  }</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  };</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> </div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="keyword">const</span> int16x8_t res_s16 = vcombine_s16(vqmovn_s32(res_s32.val[0]), vqmovn_s32(res_s32.val[1]));</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span> </div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="keywordflow">return</span> vqmovn_s16(res_s16);</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="ac18aedae4207e681f6f833281d2395a0"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">float32x4x4_t arm_compute::vcvtq_f32_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00562">562</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00563"></a><span class="lineno"> 563</span> {</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <span class="keyword">const</span> float32x4_t pow2 = vdupq_n_f32(1.0f / (1 << fixed_point_position));</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span> </div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <span class="keyword">const</span> int16x8x2_t res_s16 =</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  {</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  {</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  vmovl_s8(vget_low_s8(a)),</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  vmovl_s8(vget_high_s8(a)),</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  }</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  };</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span> </div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <span class="keyword">const</span> int32x4x4_t res_s32 =</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  {</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  {</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  vmovl_s16(vget_low_s16(res_s16.val[0])),</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  vmovl_s16(vget_high_s16(res_s16.val[0])),</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  vmovl_s16(vget_low_s16(res_s16.val[1])),</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  vmovl_s16(vget_high_s16(res_s16.val[1])),</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  }</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  };</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span> </div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  float32x4x4_t res_f32 =</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  {</div><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>  vcvtq_f32_s32(res_s32.val[0]),</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  vcvtq_f32_s32(res_s32.val[1]),</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  vcvtq_f32_s32(res_s32.val[2]),</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  vcvtq_f32_s32(res_s32.val[3])</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  }</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  };</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span> </div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  res_f32.val[0] = vmulq_f32(res_f32.val[0], pow2);</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  res_f32.val[1] = vmulq_f32(res_f32.val[1], pow2);</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  res_f32.val[2] = vmulq_f32(res_f32.val[2], pow2);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  res_f32.val[3] = vmulq_f32(res_f32.val[3], pow2);</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span> </div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <span class="keywordflow">return</span> res_f32;</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="ac2c526cae11f55c15d9e04e8767cb6db"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> vcvtq_qs8_f32 </td>
+ <td>(</td>
+ <td class="paramtype">const float32x4x4_t & </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Convert a float vector with 4x4 elements to 8 bit fixed point vector with 16 elements. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>Float input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the conversion float -> 8 bit fixed point </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00494">494</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+
+<p>Referenced by <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00150">vdupq_n_qs8_f32()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> {</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="keyword">const</span> float32x4_t pow2 = vdupq_n_f32(static_cast<float>(1 << fixed_point_position));</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> </div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  float32x4x4_t res_f32 =</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  {</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  {</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  vdupq_n_f32(0.5f),</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  vdupq_n_f32(0.5f),</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  vdupq_n_f32(0.5f),</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  vdupq_n_f32(0.5f)</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  }</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  };</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> </div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  res_f32.val[0] = vmlaq_f32(res_f32.val[0], a.val[0], pow2);</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  res_f32.val[1] = vmlaq_f32(res_f32.val[1], a.val[1], pow2);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  res_f32.val[2] = vmlaq_f32(res_f32.val[2], a.val[2], pow2);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  res_f32.val[3] = vmlaq_f32(res_f32.val[3], a.val[3], pow2);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span> </div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="keyword">const</span> int32x4x4_t res_s32 =</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  {</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  {</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  vcvtq_s32_f32(res_f32.val[0]),</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  vcvtq_s32_f32(res_f32.val[1]),</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  vcvtq_s32_f32(res_f32.val[2]),</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  vcvtq_s32_f32(res_f32.val[3]),</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  }</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  };</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> </div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <span class="keyword">const</span> int16x8x2_t res_s16 =</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  {</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  {</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  vcombine_s16(vqmovn_s32(res_s32.val[0]), vqmovn_s32(res_s32.val[1])),</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  vcombine_s16(vqmovn_s32(res_s32.val[2]), vqmovn_s32(res_s32.val[3])),</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  }</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  };</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span> </div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="keywordflow">return</span> vcombine_s8(vqmovn_s16(res_s16.val[0]), vqmovn_s16(res_s16.val[1]));</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a19e68f6a298ae587a491df52d6859350"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float32x4x4_t arm_compute::vcvtq_qs8_f32 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Convert a 8 bit fixed point vector with 16 elements to a float vector with 4x4 elements. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>8 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the conversion 8 bit fixed point -> float32x4x4 </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="aeab4c6963804a85c9ea6c319f4e95a0b"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> vdiv_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int8x8_t </td>
+ <td class="paramname"><em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Division fixed point 8bit (8 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 8bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 8bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The quotient and remainder number in fixed point format. </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00676">676</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+
+<p>References <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00274">vmul_qs8()</a>, and <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00602">vrecip_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00677"></a><span class="lineno"> 677</span> {</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute.xhtml#afccf1305c480f2338af8925bba6b54cd">vmul_qs8</a>(a, <a class="code" href="namespacearm__compute.xhtml#aa24b270b0193ad8983dfecd6105c4936">vrecip_qs8</a>(b, fixed_point_position), fixed_point_position);</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_afccf1305c480f2338af8925bba6b54cd"><div class="ttname"><a href="namespacearm__compute.xhtml#afccf1305c480f2338af8925bba6b54cd">arm_compute::vmul_qs8</a></div><div class="ttdeci">qint8x8_t vmul_qs8(qint8x8_t a, qint8x8_t b, int fixed_point_position)</div><div class="ttdoc">8 bit fixed point vector multiply (8 elements) </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00274">NEFixedPoint.inl:274</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_aa24b270b0193ad8983dfecd6105c4936"><div class="ttname"><a href="namespacearm__compute.xhtml#aa24b270b0193ad8983dfecd6105c4936">arm_compute::vrecip_qs8</a></div><div class="ttdeci">qint8x8_t vrecip_qs8(qint8x8_t a, int fixed_point_position)</div><div class="ttdoc">Calculate reciprocal of a fixed point 8bit number using the Newton-Raphson method. </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00602">NEFixedPoint.inl:602</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="aebc9202dc76554d81b3b082e74016197"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> vdivq_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int8x16_t </td>
+ <td class="paramname"><em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Division fixed point 8bit (16 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 8bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 8bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The quotient and remainder number in 8bit fixed point format. </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00681">681</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+
+<p>References <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00291">vmulq_qs8()</a>, and <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00626">vrecipq_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00682"></a><span class="lineno"> 682</span> {</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute.xhtml#a031b17d4102856aa4d6bf7ebf83bf0ab">vmulq_qs8</a>(a, <a class="code" href="namespacearm__compute.xhtml#abbeb1dc4834fb4e97cf94d702d0e0f91">vrecipq_qs8</a>(b, fixed_point_position), fixed_point_position);</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a031b17d4102856aa4d6bf7ebf83bf0ab"><div class="ttname"><a href="namespacearm__compute.xhtml#a031b17d4102856aa4d6bf7ebf83bf0ab">arm_compute::vmulq_qs8</a></div><div class="ttdeci">qint8x16_t vmulq_qs8(qint8x16_t a, qint8x16_t b, int fixed_point_position)</div><div class="ttdoc">8 bit fixed point vector multiply (16 elements) </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00291">NEFixedPoint.inl:291</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_abbeb1dc4834fb4e97cf94d702d0e0f91"><div class="ttname"><a href="namespacearm__compute.xhtml#abbeb1dc4834fb4e97cf94d702d0e0f91">arm_compute::vrecipq_qs8</a></div><div class="ttdeci">qint8x16_t vrecipq_qs8(qint8x16_t a, int fixed_point_position)</div><div class="ttdoc">Calculate reciprocal of a fixed point 8bit number using the Newton-Raphson method. </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00626">NEFixedPoint.inl:626</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a1a226812e3cfdf3494adbdd92d4a1cb3"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> vdup_n_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td>
+ <td class="paramname"><em>a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point vector duplicate (8 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>8 bit fixed point to duplicate</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the vector duplication </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00140">140</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+
+<p>Referenced by <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00880">vinvsqrt_qs8()</a>, and <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00907">vqinvsqrt_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">return</span> vdup_n_s8(a);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="aed2fc8d1b9642b7625379a930ef4914a"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> arm_compute::vdupq_n_qs16 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> </td>
+ <td class="paramname"><em>a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00164">164</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">return</span> vdupq_n_s16(a);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a740436aed8843612da747f40ff926875"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> arm_compute::vdupq_n_qs16 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> </td>
+ <td class="paramname"><em>a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>16 bit fixed point vector duplicate (8 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>16 bit fixed point to duplicate</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the vector duplication </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="adbd4df93ed00fcda54f91e669ea2be04"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> vdupq_n_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> </td>
+ <td class="paramname"><em>a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point vector duplicate (16 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>8 bit fixed point to duplicate</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the vector duplication </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00145">145</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+
+<p>Referenced by <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00934">vinvsqrtq_qs8()</a>, and <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00961">vqinvsqrtq_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">return</span> vdupq_n_s8(a);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="ab20e66231de6c259952534de39214784"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> vdupq_n_qs8_f32 </td>
+ <td>(</td>
+ <td class="paramtype">float </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Duplicate a float and convert it to 8 bit fixed point vector (16 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>8 bit fixed point to duplicate </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the vector duplication </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00150">150</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+
+<p>References <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00494">vcvtq_qs8_f32()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> {</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  float32x4x4_t res =</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  vdupq_n_f32(a),</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  vdupq_n_f32(a),</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  vdupq_n_f32(a),</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  vdupq_n_f32(a),</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  };</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute.xhtml#ac2c526cae11f55c15d9e04e8767cb6db">vcvtq_qs8_f32</a>(res, fixed_point_position);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_ac2c526cae11f55c15d9e04e8767cb6db"><div class="ttname"><a href="namespacearm__compute.xhtml#ac2c526cae11f55c15d9e04e8767cb6db">arm_compute::vcvtq_qs8_f32</a></div><div class="ttdeci">qint8x16_t vcvtq_qs8_f32(const float32x4x4_t &a, int fixed_point_position)</div><div class="ttdoc">Convert a float vector with 4x4 elements to 8 bit fixed point vector with 16 elements. </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00494">NEFixedPoint.inl:494</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="ade3ef16de304661943c900ac9a47d28f"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">float32x4_t vexpq_f32 </td>
+ <td>(</td>
+ <td class="paramtype">float32x4_t </td>
<td class="paramname"><em>x</em></td><td>)</td>
<td></td>
</tr>
@@ -7260,23 +12154,23 @@
<p>Calculate exponential. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramname">x</td><td>Input vector value in F32 format.</td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">x</td><td>Input vector value in F32 format.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The calculated exponent. </dd></dl>
-<p>Definition at line <a class="el" href="_n_e_math_8h_source.xhtml#l00115">115</a> of file <a class="el" href="_n_e_math_8h_source.xhtml">NEMath.h</a>.</p>
+<p>Definition at line <a class="el" href="_n_e_math_8inl_source.xhtml#l00086">86</a> of file <a class="el" href="_n_e_math_8inl_source.xhtml">NEMath.inl</a>.</p>
-<p>References <a class="el" href="_n_e_math_8h_source.xhtml#l00097">vtaylor_polyq_f32()</a>.</p>
+<p>References <a class="el" href="_n_e_math_8inl_source.xhtml#l00074">vtaylor_polyq_f32()</a>.</p>
-<p>Referenced by <a class="el" href="_n_e_math_8h_source.xhtml#l00191">vpowq_f32()</a>, and <a class="el" href="_n_e_math_8h_source.xhtml#l00167">vtanhq_f32()</a>.</p>
-<div class="fragment"><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keyword">static</span> <span class="keyword">const</span> float32x4_t CONST_LN2 = vdupq_n_f32(0.6931471805f); <span class="comment">// ln(2)</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keyword">static</span> <span class="keyword">const</span> float32x4_t CONST_INV_LN2 = vdupq_n_f32(1.4426950408f); <span class="comment">// 1/ln(2)</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="comment">// Perform range reduction [-log(2),log(2)]</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  int32x4_t m = vcvtq_s32_f32(vmulq_f32(x, CONST_INV_LN2));</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  float32x4_t val = vmlsq_f32(x, vcvtq_f32_s32(m), CONST_LN2);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="comment">// Polynomial Approximation</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  float32x4_t poly = <a class="code" href="namespacearm__compute.xhtml#ac91f64208cebf2177a6be3a40ecebca8">vtaylor_polyq_f32</a>(val, <a class="code" href="namespacearm__compute.xhtml#a869945609357fa552d94eb16f7aad4e9">exp_tab</a>);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="comment">// Reconstruct</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  poly = vreinterpretq_f32_s32(vaddq_s32(vreinterpretq_s32_f32(poly), vshlq_n_s32(m, 23)));</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">return</span> poly;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a869945609357fa552d94eb16f7aad4e9"><div class="ttname"><a href="namespacearm__compute.xhtml#a869945609357fa552d94eb16f7aad4e9">arm_compute::exp_tab</a></div><div class="ttdeci">const std::array< float32x4_t, 8 > exp_tab</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_math_8h_source.xhtml#l00032">NEMath.h:32</a></div></div>
-<div class="ttc" id="namespacearm__compute_xhtml_ac91f64208cebf2177a6be3a40ecebca8"><div class="ttname"><a href="namespacearm__compute.xhtml#ac91f64208cebf2177a6be3a40ecebca8">arm_compute::vtaylor_polyq_f32</a></div><div class="ttdeci">float32x4_t vtaylor_polyq_f32(const float32x4_t &x, const std::array< float32x4_t, 8 > &coeffs)</div><div class="ttdoc">Perform a 7th degree polynomial approximation using Estrin&#39;s method. </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_math_8h_source.xhtml#l00097">NEMath.h:97</a></div></div>
+<p>Referenced by <a class="el" href="_n_e_math_8inl_source.xhtml#l00137">vpowq_f32()</a>, and <a class="el" href="_n_e_math_8inl_source.xhtml#l00122">vtanhq_f32()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keyword">static</span> <span class="keyword">const</span> float32x4_t CONST_LN2 = vdupq_n_f32(0.6931471805f); <span class="comment">// ln(2)</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keyword">static</span> <span class="keyword">const</span> float32x4_t CONST_INV_LN2 = vdupq_n_f32(1.4426950408f); <span class="comment">// 1/ln(2)</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="comment">// Perform range reduction [-log(2),log(2)]</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  int32x4_t m = vcvtq_s32_f32(vmulq_f32(x, CONST_INV_LN2));</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  float32x4_t val = vmlsq_f32(x, vcvtq_f32_s32(m), CONST_LN2);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="comment">// Polynomial Approximation</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  float32x4_t poly = <a class="code" href="namespacearm__compute.xhtml#a4fa76a98dce5ed1b655ff840f2ce6e57">vtaylor_polyq_f32</a>(val, <a class="code" href="namespacearm__compute.xhtml#a869945609357fa552d94eb16f7aad4e9">exp_tab</a>);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="comment">// Reconstruct</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  poly = vreinterpretq_f32_s32(vaddq_s32(vreinterpretq_s32_f32(poly), vshlq_n_s32(m, 23)));</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">return</span> poly;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a869945609357fa552d94eb16f7aad4e9"><div class="ttname"><a href="namespacearm__compute.xhtml#a869945609357fa552d94eb16f7aad4e9">arm_compute::exp_tab</a></div><div class="ttdeci">const std::array< float32x4_t, 8 > exp_tab</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_math_8inl_source.xhtml#l00028">NEMath.inl:28</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a4fa76a98dce5ed1b655ff840f2ce6e57"><div class="ttname"><a href="namespacearm__compute.xhtml#a4fa76a98dce5ed1b655ff840f2ce6e57">arm_compute::vtaylor_polyq_f32</a></div><div class="ttdeci">float32x4_t vtaylor_polyq_f32(float32x4_t x, const std::array< float32x4_t, 8 > &coeffs)</div><div class="ttdoc">Perform a 7th degree polynomial approximation using Estrin&#39;s method. </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_math_8inl_source.xhtml#l00074">NEMath.inl:74</a></div></div>
</div><!-- fragment -->
</div>
</div>
-<a class="anchor" id="ae1cdb8bbcb3f7ce5d3469f42f19d37a6"></a>
+<a class="anchor" id="ab93c92d0f3228809b6a4bfaa24eb4924"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
@@ -7284,9 +12178,79 @@
<td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname">float32x4_t arm_compute::vinvq_f32 </td>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> vget_high_qs8 </td>
<td>(</td>
- <td class="paramtype">const float32x4_t & </td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Get the higher half of a 16 elements vector. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>vector of 16 elements</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>8 bit fixed point vector (8 elements) </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00080">80</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">return</span> vget_high_s8(a);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a85ff7d135f7aa13359bd575139ba14dd"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> vget_low_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Get the lower half of a 16 elements vector. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>vector of 16 elements</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>8 bit fixed point vector (8 elements) </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00075">75</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">return</span> vget_low_s8(a);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="ac8f459d5899b79c00fb4042a5b3470fb"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">float32x4_t vinvq_f32 </td>
+ <td>(</td>
+ <td class="paramtype">float32x4_t </td>
<td class="paramname"><em>x</em></td><td>)</td>
<td></td>
</tr>
@@ -7301,19 +12265,19 @@
<p>Calculate reciprocal. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramname">x</td><td>Input value.</td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">x</td><td>Input value.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The calculated reciprocal. </dd></dl>
-<p>Definition at line <a class="el" href="_n_e_math_8h_source.xhtml#l00082">82</a> of file <a class="el" href="_n_e_math_8h_source.xhtml">NEMath.h</a>.</p>
+<p>Definition at line <a class="el" href="_n_e_math_8inl_source.xhtml#l00066">66</a> of file <a class="el" href="_n_e_math_8inl_source.xhtml">NEMath.inl</a>.</p>
-<p>Referenced by <a class="el" href="_n_e_math_8h_source.xhtml#l00167">vtanhq_f32()</a>.</p>
-<div class="fragment"><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  float32x4_t recip = vrecpeq_f32(x);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  recip = vmulq_f32(vrecpsq_f32(x, recip), recip);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  recip = vmulq_f32(vrecpsq_f32(x, recip), recip);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">return</span> recip;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> }</div></div><!-- fragment -->
+<p>Referenced by <a class="el" href="_n_e_math_8inl_source.xhtml#l00122">vtanhq_f32()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  float32x4_t recip = vrecpeq_f32(x);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  recip = vmulq_f32(vrecpsq_f32(x, recip), recip);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  recip = vmulq_f32(vrecpsq_f32(x, recip), recip);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">return</span> recip;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> }</div></div><!-- fragment -->
</div>
</div>
-<a class="anchor" id="ab8970d7aed07d8649f5e3088455948b8"></a>
+<a class="anchor" id="ab7fbbbe8d980de582a73b5546b303b1f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
@@ -7321,7 +12285,58 @@
<td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname">float32x4_t arm_compute::vinvsqrtq_f32 </td>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> vinvsqrt_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Calculate inverse square root for fixed point 8bit using Newton-Raphosn method (8 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>8bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8bit inverse sqrt. </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00880">880</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+
+<p>References <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00140">vdup_n_qs8()</a>, and <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00274">vmul_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00881"></a><span class="lineno"> 881</span> {</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> const_three = vdup_n_s8(3 << fixed_point_position);</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span> </div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  <span class="comment">// Find shift value. Number must be in (0.5, 2) range.</span></div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> shift_value = vneg_s8(vsub_s8(vdup_n_s8(8), vadd_s8(vclz_s8(a), vdup_n_s8(fixed_point_position))));</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">// Add one when the shift value is negative in order to get the correct result when we shift right with 1</span></div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> temp = vsub_s8(vdup_n_s8(8), vadd_s8(vclz_s8(a), vdup_n_s8(fixed_point_position)));</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  uint8x8_t temp_ltz = vclt_s8(temp, <a class="code" href="namespacearm__compute.xhtml#a1a226812e3cfdf3494adbdd92d4a1cb3">vdup_n_qs8</a>(0));</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  temp = vbsl_s8(temp_ltz, vadd_s8(temp, vdup_n_s8(1)), temp);</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> shift_value2 = vneg_s8(vshr_n_s8(temp, 1));</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>  temp = vshl_s8(a, shift_value);</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span> </div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>  <span class="comment">// Initial guess</span></div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> x = temp;</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span> </div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  <span class="comment">// Calculate (x / 2) * (3 - a * x^2)</span></div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  <span class="comment">// After three iterations we have the result for 8 bit</span></div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  x = vshr_n_s8(<a class="code" href="namespacearm__compute.xhtml#afccf1305c480f2338af8925bba6b54cd">vmul_qs8</a>(x, vsub_s8(const_three, <a class="code" href="namespacearm__compute.xhtml#afccf1305c480f2338af8925bba6b54cd">vmul_qs8</a>(temp, <a class="code" href="namespacearm__compute.xhtml#afccf1305c480f2338af8925bba6b54cd">vmul_qs8</a>(x, x, fixed_point_position), fixed_point_position)), fixed_point_position), 1);</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  x = vshr_n_s8(<a class="code" href="namespacearm__compute.xhtml#afccf1305c480f2338af8925bba6b54cd">vmul_qs8</a>(x, vsub_s8(const_three, <a class="code" href="namespacearm__compute.xhtml#afccf1305c480f2338af8925bba6b54cd">vmul_qs8</a>(temp, <a class="code" href="namespacearm__compute.xhtml#afccf1305c480f2338af8925bba6b54cd">vmul_qs8</a>(x, x, fixed_point_position), fixed_point_position)), fixed_point_position), 1);</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  x = vshr_n_s8(<a class="code" href="namespacearm__compute.xhtml#afccf1305c480f2338af8925bba6b54cd">vmul_qs8</a>(x, vsub_s8(const_three, <a class="code" href="namespacearm__compute.xhtml#afccf1305c480f2338af8925bba6b54cd">vmul_qs8</a>(temp, <a class="code" href="namespacearm__compute.xhtml#afccf1305c480f2338af8925bba6b54cd">vmul_qs8</a>(x, x, fixed_point_position), fixed_point_position)), fixed_point_position), 1);</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span> </div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  <span class="keywordflow">return</span> vshl_s8(x, shift_value2);</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a1a226812e3cfdf3494adbdd92d4a1cb3"><div class="ttname"><a href="namespacearm__compute.xhtml#a1a226812e3cfdf3494adbdd92d4a1cb3">arm_compute::vdup_n_qs8</a></div><div class="ttdeci">qint8x8_t vdup_n_qs8(qint8_t a)</div><div class="ttdoc">8 bit fixed point vector duplicate (8 elements) </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00140">NEFixedPoint.inl:140</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_afccf1305c480f2338af8925bba6b54cd"><div class="ttname"><a href="namespacearm__compute.xhtml#afccf1305c480f2338af8925bba6b54cd">arm_compute::vmul_qs8</a></div><div class="ttdeci">qint8x8_t vmul_qs8(qint8x8_t a, qint8x8_t b, int fixed_point_position)</div><div class="ttdoc">8 bit fixed point vector multiply (8 elements) </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00274">NEFixedPoint.inl:274</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a16a1bee14f1db073f75caa76dacf5078"><div class="ttname"><a href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">arm_compute::qint8x8_t</a></div><div class="ttdeci">int8x8_t qint8x8_t</div><div class="ttdoc">8 bit fixed point vector with 8 elements </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8h_source.xhtml#l00033">NEFixedPoint.h:33</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a2e27db6b9692c4c2013653e276af654d"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">float32x4_t vinvsqrtq_f32 </td>
<td>(</td>
<td class="paramtype">float32x4_t </td>
<td class="paramname"><em>x</em></td><td>)</td>
@@ -7338,17 +12353,17 @@
<p>Calculate inverse square root. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramname">x</td><td>Input value.</td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">x</td><td>Input value.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The calculated inverse square root. </dd></dl>
-<p>Definition at line <a class="el" href="_n_e_math_8h_source.xhtml#l00067">67</a> of file <a class="el" href="_n_e_math_8h_source.xhtml">NEMath.h</a>.</p>
-<div class="fragment"><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  float32x4_t sqrt_reciprocal = vrsqrteq_f32(x);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  sqrt_reciprocal = vmulq_f32(vrsqrtsq_f32(vmulq_f32(x, sqrt_reciprocal), sqrt_reciprocal), sqrt_reciprocal);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  sqrt_reciprocal = vmulq_f32(vrsqrtsq_f32(vmulq_f32(x, sqrt_reciprocal), sqrt_reciprocal), sqrt_reciprocal);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">return</span> sqrt_reciprocal;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> }</div></div><!-- fragment -->
+<p>Definition at line <a class="el" href="_n_e_math_8inl_source.xhtml#l00057">57</a> of file <a class="el" href="_n_e_math_8inl_source.xhtml">NEMath.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  float32x4_t sqrt_reciprocal = vrsqrteq_f32(x);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  sqrt_reciprocal = vmulq_f32(vrsqrtsq_f32(vmulq_f32(x, sqrt_reciprocal), sqrt_reciprocal), sqrt_reciprocal);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  sqrt_reciprocal = vmulq_f32(vrsqrtsq_f32(vmulq_f32(x, sqrt_reciprocal), sqrt_reciprocal), sqrt_reciprocal);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">return</span> sqrt_reciprocal;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> }</div></div><!-- fragment -->
</div>
</div>
-<a class="anchor" id="a4082e6868f902da08483e54ec07484c8"></a>
+<a class="anchor" id="a4be9120d5c04e6aab0831095acd24534"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
@@ -7356,9 +12371,321 @@
<td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname">float32x4_t arm_compute::vlogq_f32 </td>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> vinvsqrtq_qs8 </td>
<td>(</td>
- <td class="paramtype">const float32x4_t & </td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Calculate inverse square root for fixed point 8bit using Newton-Raphosn method (16 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>8bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8bit inverse sqrt. </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00934">934</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+
+<p>References <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00145">vdupq_n_qs8()</a>, and <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00291">vmulq_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00935"></a><span class="lineno"> 935</span> {</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> const_three = vdupq_n_s8(3 << fixed_point_position);</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span> </div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  <span class="comment">// Find shift value. Number must be in (0.5, 2) range.</span></div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> shift_value = vnegq_s8(vsubq_s8(vdupq_n_s8(8), vaddq_s8(vclzq_s8(a), vdupq_n_s8(fixed_point_position))));</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span> </div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  <span class="comment">// Add one when the shift value is negative in order to get the correct result when we shift right with 1</span></div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> temp = vsubq_s8(vdupq_n_s8(8), vaddq_s8(vclzq_s8(a), vdupq_n_s8(fixed_point_position)));</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  uint8x16_t temp_ltz = vcltq_s8(temp, <a class="code" href="namespacearm__compute.xhtml#adbd4df93ed00fcda54f91e669ea2be04">vdupq_n_qs8</a>(0));</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  temp = vbslq_s8(temp_ltz, vaddq_s8(temp, vdupq_n_s8(1)), temp);</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> shift_value2 = vnegq_s8(vshrq_n_s8(temp, 1));</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span> </div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  temp = vshlq_s8(a, shift_value);</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span> </div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  <span class="comment">// Initial guess</span></div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> x = temp;</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span> </div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  <span class="comment">// Calculate (x / 2) * (3 - a * x^2)</span></div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  <span class="comment">// After three iterations we have the result for 8 bit</span></div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  x = vshrq_n_s8(<a class="code" href="namespacearm__compute.xhtml#a031b17d4102856aa4d6bf7ebf83bf0ab">vmulq_qs8</a>(x, vsubq_s8(const_three, <a class="code" href="namespacearm__compute.xhtml#a031b17d4102856aa4d6bf7ebf83bf0ab">vmulq_qs8</a>(temp, <a class="code" href="namespacearm__compute.xhtml#a031b17d4102856aa4d6bf7ebf83bf0ab">vmulq_qs8</a>(x, x, fixed_point_position), fixed_point_position)), fixed_point_position), 1);</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  x = vshrq_n_s8(<a class="code" href="namespacearm__compute.xhtml#a031b17d4102856aa4d6bf7ebf83bf0ab">vmulq_qs8</a>(x, vsubq_s8(const_three, <a class="code" href="namespacearm__compute.xhtml#a031b17d4102856aa4d6bf7ebf83bf0ab">vmulq_qs8</a>(temp, <a class="code" href="namespacearm__compute.xhtml#a031b17d4102856aa4d6bf7ebf83bf0ab">vmulq_qs8</a>(x, x, fixed_point_position), fixed_point_position)), fixed_point_position), 1);</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>  x = vshrq_n_s8(<a class="code" href="namespacearm__compute.xhtml#a031b17d4102856aa4d6bf7ebf83bf0ab">vmulq_qs8</a>(x, vsubq_s8(const_three, <a class="code" href="namespacearm__compute.xhtml#a031b17d4102856aa4d6bf7ebf83bf0ab">vmulq_qs8</a>(temp, <a class="code" href="namespacearm__compute.xhtml#a031b17d4102856aa4d6bf7ebf83bf0ab">vmulq_qs8</a>(x, x, fixed_point_position), fixed_point_position)), fixed_point_position), 1);</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span> </div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  <span class="keywordflow">return</span> vshlq_s8(x, shift_value2);</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a5b99ed49abd6b7bf13dafdd17bcef855"><div class="ttname"><a href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">arm_compute::qint8x16_t</a></div><div class="ttdeci">int8x16_t qint8x16_t</div><div class="ttdoc">8 bit fixed point vector with 16 elements </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8h_source.xhtml#l00037">NEFixedPoint.h:37</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_adbd4df93ed00fcda54f91e669ea2be04"><div class="ttname"><a href="namespacearm__compute.xhtml#adbd4df93ed00fcda54f91e669ea2be04">arm_compute::vdupq_n_qs8</a></div><div class="ttdeci">qint8x16_t vdupq_n_qs8(qint8_t a)</div><div class="ttdoc">8 bit fixed point vector duplicate (16 elements) </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00145">NEFixedPoint.inl:145</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a031b17d4102856aa4d6bf7ebf83bf0ab"><div class="ttname"><a href="namespacearm__compute.xhtml#a031b17d4102856aa4d6bf7ebf83bf0ab">arm_compute::vmulq_qs8</a></div><div class="ttdeci">qint8x16_t vmulq_qs8(qint8x16_t a, qint8x16_t b, int fixed_point_position)</div><div class="ttdoc">8 bit fixed point vector multiply (16 elements) </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00291">NEFixedPoint.inl:291</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="ada853a8e19c80626633d95392d2b4a8b"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> vld1_dup_qs8 </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> * </td>
+ <td class="paramname"><em>addr</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Load all lanes of 8 bit fixed point vector with same value from memory (8 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">addr</td><td>Memory address of the 8 bit fixed point scalar value to load</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>8 bit fixed point vector (8 elements) </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00105">105</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">return</span> vld1_dup_s8(addr);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a1470ca9d692f773f33ddbd9b3a37f1f9"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a82c56f0856f56d430393e6a00baee983">qint16x4_t</a> vld1_qs16 </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> * </td>
+ <td class="paramname"><em>addr</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Load a single 16 bit fixed point vector from memory (4 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">addr</td><td>Memory address of the 16 bit fixed point vector to load</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>16 bit fixed point vector (4 elements) </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00095">95</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">return</span> vld1_s16(addr);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a77ef79482edac98140bbdfaeffb78b8f"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> vld1_qs8 </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> * </td>
+ <td class="paramname"><em>addr</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Load a single 8 bit fixed point vector from memory (8 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">addr</td><td>Memory address of the 8 bit fixed point vector to load</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>8 bit fixed point vector (8 elements) </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00085">85</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">return</span> vld1_s8(addr);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="ad988b528a38525b8ceca56ed8d09c801"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> vld1q_dup_qs8 </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> * </td>
+ <td class="paramname"><em>addr</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Load all lanes of 8 bit fixed point vector with same value from memory (16 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">addr</td><td>Memory address of the 8 bit fixed point scalar value to load</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>8 bit fixed point vector (16 elements) </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00110">110</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">return</span> vld1q_dup_s8(addr);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="aaa2cfaf59eb25ffb975bea87844e23c6"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> vld1q_qs16 </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> * </td>
+ <td class="paramname"><em>addr</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Load a single 16 bit fixed point vector from memory (8 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">addr</td><td>Memory address of the 16 bit fixed point vector to load</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>16 bit fixed point vector (8 elements) </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00100">100</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">return</span> vld1q_s16(addr);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="aba22755f7d41ffc62e23e5594751ecaa"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> vld1q_qs8 </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> * </td>
+ <td class="paramname"><em>addr</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Load a single 8 bit fixed point vector from memory (16 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">addr</td><td>Memory address of the 8 bit fixed point vector to load</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>8 bit fixed point vector (16 elements) </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00090">90</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">return</span> vld1q_s8(addr);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a475d617b2ee92ec39588e6d6e488471a"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> vlog_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Calculate logarithm fixed point 16bit (8 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>8bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8bit logarithm. </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00802">802</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+
+<p>References <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00274">vmul_qs8()</a>, and <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00602">vrecip_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00803"></a><span class="lineno"> 803</span> {</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> const_one = vdup_n_s8(1 << fixed_point_position);</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> const_seven_dec = vdup_n_s8(7);</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> const_ln2 = vdup_n_s8(0x58 >> (7 - fixed_point_position)); <span class="comment">// ln(2)</span></div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span> </div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  <span class="comment">// If 0 < a < 1, calculate log(1/x)</span></div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  uint8x8_t calc_reciprocal = vclt_s8(a, const_one);</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> recip = vdup_n_s8(0);</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  recip = vbsl_s8(calc_reciprocal, recip, a);</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span> </div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  <span class="comment">// Calculate reciprocal</span></div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  recip = <a class="code" href="namespacearm__compute.xhtml#aa24b270b0193ad8983dfecd6105c4936">vrecip_qs8</a>(recip, fixed_point_position);</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  a = vbsl_s8(calc_reciprocal, recip, a);</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">// Get decimal part of a</span></div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> shift_value = vdup_n_s8(-fixed_point_position);</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> dec_a = vshl_s8(a, shift_value); <span class="comment">// a >> fixed_point_position</span></div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span> </div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  <span class="comment">// Get exponent of 2^n which is equal or less than dec_a</span></div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  shift_value = vsub_s8(const_seven_dec, vclz_s8(dec_a));</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span> </div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  <span class="comment">// Get x to range (1, 2]</span></div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> shift_value_neg = vneg_s8(shift_value);</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> temp = vsub_s8(vrshl_s8(a, shift_value_neg), const_one);</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> sum = vmul_s8(shift_value, const_one);</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span> </div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  <span class="comment">// Polynomial Approximation</span></div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> poly = vtaylor_poly_qs8<true>(temp, fixed_point_position);</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span> </div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  <span class="comment">// Reconstruct</span></div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  poly = <a class="code" href="namespacearm__compute.xhtml#afccf1305c480f2338af8925bba6b54cd">vmul_qs8</a>(vadd_s8(poly, sum), const_ln2, fixed_point_position);</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span> </div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  <span class="comment">// Set negative value for 0 < a < 1</span></div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  poly = vbsl_s8(calc_reciprocal, vneg_s8(poly), poly);</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span> </div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  <span class="keywordflow">return</span> poly;</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_afccf1305c480f2338af8925bba6b54cd"><div class="ttname"><a href="namespacearm__compute.xhtml#afccf1305c480f2338af8925bba6b54cd">arm_compute::vmul_qs8</a></div><div class="ttdeci">qint8x8_t vmul_qs8(qint8x8_t a, qint8x8_t b, int fixed_point_position)</div><div class="ttdoc">8 bit fixed point vector multiply (8 elements) </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00274">NEFixedPoint.inl:274</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_aa24b270b0193ad8983dfecd6105c4936"><div class="ttname"><a href="namespacearm__compute.xhtml#aa24b270b0193ad8983dfecd6105c4936">arm_compute::vrecip_qs8</a></div><div class="ttdeci">qint8x8_t vrecip_qs8(qint8x8_t a, int fixed_point_position)</div><div class="ttdoc">Calculate reciprocal of a fixed point 8bit number using the Newton-Raphson method. </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00602">NEFixedPoint.inl:602</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a16a1bee14f1db073f75caa76dacf5078"><div class="ttname"><a href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">arm_compute::qint8x8_t</a></div><div class="ttdeci">int8x8_t qint8x8_t</div><div class="ttdoc">8 bit fixed point vector with 8 elements </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8h_source.xhtml#l00033">NEFixedPoint.h:33</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a37a3e03a22ad160a2e9e5c133607e020"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">float32x4_t vlogq_f32 </td>
+ <td>(</td>
+ <td class="paramtype">float32x4_t </td>
<td class="paramname"><em>x</em></td><td>)</td>
<td></td>
</tr>
@@ -7373,23 +12700,23 @@
<p>Calculate logarithm. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramname">x</td><td>Input vector value in F32 format.</td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">x</td><td>Input vector value in F32 format.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The calculated logarithm. </dd></dl>
-<p>Definition at line <a class="el" href="_n_e_math_8h_source.xhtml#l00139">139</a> of file <a class="el" href="_n_e_math_8h_source.xhtml">NEMath.h</a>.</p>
+<p>Definition at line <a class="el" href="_n_e_math_8inl_source.xhtml#l00104">104</a> of file <a class="el" href="_n_e_math_8inl_source.xhtml">NEMath.inl</a>.</p>
-<p>References <a class="el" href="_n_e_math_8h_source.xhtml#l00097">vtaylor_polyq_f32()</a>.</p>
+<p>References <a class="el" href="_n_e_math_8inl_source.xhtml#l00074">vtaylor_polyq_f32()</a>.</p>
-<p>Referenced by <a class="el" href="_n_e_math_8h_source.xhtml#l00191">vpowq_f32()</a>.</p>
-<div class="fragment"><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keyword">static</span> <span class="keyword">const</span> int32x4_t CONST_127 = vdupq_n_s32(127); <span class="comment">// 127</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keyword">static</span> <span class="keyword">const</span> float32x4_t CONST_LN2 = vdupq_n_f32(0.6931471805f); <span class="comment">// ln(2)</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="comment">// Extract exponent</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  int32x4_t m = vsubq_s32(vreinterpretq_s32_u32(vshrq_n_u32(vreinterpretq_u32_f32(x), 23)), CONST_127);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  float32x4_t val = vreinterpretq_f32_s32(vsubq_s32(vreinterpretq_s32_f32(x), vshlq_n_s32(m, 23)));</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="comment">// Polynomial Approximation</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  float32x4_t poly = <a class="code" href="namespacearm__compute.xhtml#ac91f64208cebf2177a6be3a40ecebca8">vtaylor_polyq_f32</a>(val, <a class="code" href="namespacearm__compute.xhtml#a48fb9cf404e8f7043235bf14105c9793">log_tab</a>);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="comment">// Reconstruct</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  poly = vmlaq_f32(poly, vcvtq_f32_s32(m), CONST_LN2);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">return</span> poly;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_ac91f64208cebf2177a6be3a40ecebca8"><div class="ttname"><a href="namespacearm__compute.xhtml#ac91f64208cebf2177a6be3a40ecebca8">arm_compute::vtaylor_polyq_f32</a></div><div class="ttdeci">float32x4_t vtaylor_polyq_f32(const float32x4_t &x, const std::array< float32x4_t, 8 > &coeffs)</div><div class="ttdoc">Perform a 7th degree polynomial approximation using Estrin&#39;s method. </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_math_8h_source.xhtml#l00097">NEMath.h:97</a></div></div>
-<div class="ttc" id="namespacearm__compute_xhtml_a48fb9cf404e8f7043235bf14105c9793"><div class="ttname"><a href="namespacearm__compute.xhtml#a48fb9cf404e8f7043235bf14105c9793">arm_compute::log_tab</a></div><div class="ttdeci">const std::array< float32x4_t, 8 > log_tab</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_math_8h_source.xhtml#l00047">NEMath.h:47</a></div></div>
+<p>Referenced by <a class="el" href="_n_e_math_8inl_source.xhtml#l00137">vpowq_f32()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keyword">static</span> <span class="keyword">const</span> int32x4_t CONST_127 = vdupq_n_s32(127); <span class="comment">// 127</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keyword">static</span> <span class="keyword">const</span> float32x4_t CONST_LN2 = vdupq_n_f32(0.6931471805f); <span class="comment">// ln(2)</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="comment">// Extract exponent</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  int32x4_t m = vsubq_s32(vreinterpretq_s32_u32(vshrq_n_u32(vreinterpretq_u32_f32(x), 23)), CONST_127);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  float32x4_t val = vreinterpretq_f32_s32(vsubq_s32(vreinterpretq_s32_f32(x), vshlq_n_s32(m, 23)));</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="comment">// Polynomial Approximation</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  float32x4_t poly = <a class="code" href="namespacearm__compute.xhtml#a4fa76a98dce5ed1b655ff840f2ce6e57">vtaylor_polyq_f32</a>(val, <a class="code" href="namespacearm__compute.xhtml#a48fb9cf404e8f7043235bf14105c9793">log_tab</a>);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="comment">// Reconstruct</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  poly = vmlaq_f32(poly, vcvtq_f32_s32(m), CONST_LN2);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">return</span> poly;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a4fa76a98dce5ed1b655ff840f2ce6e57"><div class="ttname"><a href="namespacearm__compute.xhtml#a4fa76a98dce5ed1b655ff840f2ce6e57">arm_compute::vtaylor_polyq_f32</a></div><div class="ttdeci">float32x4_t vtaylor_polyq_f32(float32x4_t x, const std::array< float32x4_t, 8 > &coeffs)</div><div class="ttdoc">Perform a 7th degree polynomial approximation using Estrin&#39;s method. </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_math_8inl_source.xhtml#l00074">NEMath.inl:74</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a48fb9cf404e8f7043235bf14105c9793"><div class="ttname"><a href="namespacearm__compute.xhtml#a48fb9cf404e8f7043235bf14105c9793">arm_compute::log_tab</a></div><div class="ttdeci">const std::array< float32x4_t, 8 > log_tab</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_math_8inl_source.xhtml#l00043">NEMath.inl:43</a></div></div>
</div><!-- fragment -->
</div>
</div>
-<a class="anchor" id="ae0dbcd09c015bda4ab290b957d7bd6c7"></a>
+<a class="anchor" id="a340b9cd5ad88f1a821498c6fad80e82c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
@@ -7397,15 +12724,731 @@
<td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname">float32x4_t arm_compute::vpowq_f32 </td>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> vlogq_qs8 </td>
<td>(</td>
- <td class="paramtype">const float32x4_t & </td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Calculate logarithm fixed point 16bit (16 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>8bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8bit logarithm. </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00841">841</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+
+<p>References <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00291">vmulq_qs8()</a>, and <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00626">vrecipq_qs8()</a>.</p>
+
+<p>Referenced by <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l01014">vqpowq_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00842"></a><span class="lineno"> 842</span> {</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> const_one = vdupq_n_s8(1 << fixed_point_position);</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> const_seven_dec = vdupq_n_s8(7);</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> const_ln2 = vdupq_n_s8(0x58 >> (7 - fixed_point_position)); <span class="comment">// ln(2)</span></div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span> </div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  <span class="comment">// If 0 < a < 1, calculate log(1/x)</span></div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  uint8x16_t calc_reciprocal = vcltq_s8(a, const_one);</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> recip = vdupq_n_s8(0);</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  recip = vbslq_s8(calc_reciprocal, a, recip);</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span> </div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>  <span class="comment">// Calculate reciprocal</span></div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  recip = <a class="code" href="namespacearm__compute.xhtml#abbeb1dc4834fb4e97cf94d702d0e0f91">vrecipq_qs8</a>(recip, fixed_point_position);</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  a = vbslq_s8(calc_reciprocal, recip, a);</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span> </div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  <span class="comment">// Get decimal part of a</span></div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> shift_value = vdupq_n_s8(-fixed_point_position);</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> dec_a = vshlq_s8(a, shift_value); <span class="comment">// a >> fixed_point_position</span></div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span> </div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  <span class="comment">// Get exponent of 2^n which is equal or less than dec_a</span></div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  shift_value = vsubq_s8(const_seven_dec, vclzq_s8(dec_a));</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span> </div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  <span class="comment">// Get x to range (1, 2]</span></div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> shift_value_neg = vnegq_s8(shift_value);</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> temp = vsubq_s8(vrshlq_s8(a, shift_value_neg), const_one);</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> sum = vmulq_s8(shift_value, const_one);</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span> </div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  <span class="comment">// Polynomial Approximation</span></div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> poly = vtaylor_polyq_qs8<true>(temp, fixed_point_position);</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span> </div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  <span class="comment">// Reconstruct</span></div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  poly = <a class="code" href="namespacearm__compute.xhtml#a031b17d4102856aa4d6bf7ebf83bf0ab">vmulq_qs8</a>(vaddq_s8(poly, sum), const_ln2, fixed_point_position);</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span> </div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  <span class="comment">// Set negative value for 0 < a < 1</span></div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  poly = vbslq_s8(calc_reciprocal, vnegq_s8(poly), poly);</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span> </div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  <span class="keywordflow">return</span> poly;</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a5b99ed49abd6b7bf13dafdd17bcef855"><div class="ttname"><a href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">arm_compute::qint8x16_t</a></div><div class="ttdeci">int8x16_t qint8x16_t</div><div class="ttdoc">8 bit fixed point vector with 16 elements </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8h_source.xhtml#l00037">NEFixedPoint.h:37</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a031b17d4102856aa4d6bf7ebf83bf0ab"><div class="ttname"><a href="namespacearm__compute.xhtml#a031b17d4102856aa4d6bf7ebf83bf0ab">arm_compute::vmulq_qs8</a></div><div class="ttdeci">qint8x16_t vmulq_qs8(qint8x16_t a, qint8x16_t b, int fixed_point_position)</div><div class="ttdoc">8 bit fixed point vector multiply (16 elements) </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00291">NEFixedPoint.inl:291</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_abbeb1dc4834fb4e97cf94d702d0e0f91"><div class="ttname"><a href="namespacearm__compute.xhtml#abbeb1dc4834fb4e97cf94d702d0e0f91">arm_compute::vrecipq_qs8</a></div><div class="ttdeci">qint8x16_t vrecipq_qs8(qint8x16_t a, int fixed_point_position)</div><div class="ttdoc">Calculate reciprocal of a fixed point 8bit number using the Newton-Raphson method. </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00626">NEFixedPoint.inl:626</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a3e913e95e286244f24f9a381909c8b26"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> vmax_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>b</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point vector max (8 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 8 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 8 bit fixed point input vector</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point vector max operation </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00189">189</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">return</span> vmax_s8(a, b);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a1627f818fb2ca90f7c3880f959030556"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> vmaxq_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>b</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point vector max (16 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 8 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 8 bit fixed point input vector</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point vector max operation </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00194">194</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">return</span> vmaxq_s8(a, b);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="abed4a7c95569e1fa72d0f8bfe5a50c84"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> vmin_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>b</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point vector min (8 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 8 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 8 bit fixed point input vector</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point vector max operation </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00204">204</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">return</span> vmin_s8(a, b);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a3b393341c8500b469780137b3548f70b"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> vminq_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>b</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point vector min (16 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 8 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 8 bit fixed point input vector</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point vector min operation </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00209">209</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">return</span> vminq_s8(a, b);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a26fd8532b87adbcf27214504c38918e4"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> vmla_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point vector multiply-accumulate (8 elements). </p>
+<p>This operation performs the product between <code>b</code> and <code>c</code> and add the result to <code>a</code> (a + b * c).</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 8 bit fixed point input vector where the result of multiplication must be added to </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 8 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">c</td><td>Third 8 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point vector multiply-accumulate </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00357">357</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> {</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keyword">const</span> int16x8_t fixed_point_position_s16 = vdupq_n_s16(-fixed_point_position);</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> </div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="comment">// Initialize the temporary results with a constant used to round up the result</span></div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <a class="code" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> tmp = vdupq_n_s16(1 << (fixed_point_position - 1));</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> </div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="comment">// Vector multiply-accumulate long</span></div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  tmp = vmlal_s8(tmp, b, c);</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> </div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="comment">// Shift right by fixed_point_position</span></div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  tmp = vshlq_s16(tmp, fixed_point_position_s16);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span> </div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="comment">// Convert back to qint8 and accumulate</span></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="keywordflow">return</span> vadd_s8(a, vmovn_s16(tmp));</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a4e15143176bfacdde8b06f4bb0b67427"><div class="ttname"><a href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">arm_compute::qint16x8_t</a></div><div class="ttdeci">int16x8_t qint16x8_t</div><div class="ttdoc">16 bit fixed point vector with 8 elements </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8h_source.xhtml#l00045">NEFixedPoint.h:45</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a13873b51e98dcb41229ccf911e671693"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> vmlal_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point vector multiply-accumulate long (8 elements). </p>
+<p>This operation performs the product between <code>b</code> and <code>c</code> and add the result to the 16 bit fixed point vector <code>a</code> (a + b * c). 8 elements</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 16 bit fixed point input vector where the result of multiplication must be added to </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 8 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">c</td><td>Third 8 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point vector multiply-accumulate long </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00432">432</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00433"></a><span class="lineno"> 433</span> {</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="keyword">const</span> int16x8_t fixed_point_position_s16 = vdupq_n_s16(-fixed_point_position);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> </div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="comment">// Initialize the temporary results with a constant used to round up the result</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <a class="code" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> tmp = vdupq_n_s16(1 << (fixed_point_position - 1));</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span> </div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="comment">// Vector multiply-accumulate long</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  tmp = vmlal_s8(tmp, b, c);</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span> </div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="comment">// Shift right by fixed_point_position</span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  tmp = vshlq_s16(tmp, fixed_point_position_s16);</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span> </div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="comment">// Accumulate</span></div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <span class="keywordflow">return</span> vaddq_s16(a, tmp);</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a4e15143176bfacdde8b06f4bb0b67427"><div class="ttname"><a href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">arm_compute::qint16x8_t</a></div><div class="ttdeci">int16x8_t qint16x8_t</div><div class="ttdoc">16 bit fixed point vector with 8 elements </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8h_source.xhtml#l00045">NEFixedPoint.h:45</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="aca905840b37a91fff71e163aa619904c"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> vmlaq_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point vector multiply-accumulate (16 elements). </p>
+<p>This operation performs the product between <code>b</code> and <code>c</code> and add the result to <code>a</code> (a + b * c).</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 8 bit fixed point input vector where the result of multiplication must be added to </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 8 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">c</td><td>Third 8 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point vector multiply-accumulate </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00374">374</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> {</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="keyword">const</span> int16x8_t fixed_point_position_s16 = vdupq_n_s16(-fixed_point_position);</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span> </div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="comment">// Initialize the temporary results with a constant used to round up the result</span></div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <a class="code" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> tmp0 = vdupq_n_s16(1 << (fixed_point_position - 1));</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <a class="code" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> tmp1 = tmp0;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span> </div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <span class="comment">// Vector multiply-accumulate long</span></div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  tmp0 = vmlal_s8(tmp0, vget_low_s8(b), vget_low_s8(c));</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  tmp1 = vmlal_s8(tmp1, vget_high_s8(b), vget_high_s8(c));</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> </div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <span class="comment">// Shift right by fixed_point_position</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  tmp0 = vshlq_s16(tmp0, fixed_point_position_s16);</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  tmp1 = vshlq_s16(tmp1, fixed_point_position_s16);</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> </div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="comment">// Convert back to qint8 and accumulate</span></div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keywordflow">return</span> vcombine_s8(vadd_s8(vget_low_s8(a), vmovn_s16(tmp0)), vadd_s8(vget_high_s8(a), vmovn_s16(tmp1)));</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a4e15143176bfacdde8b06f4bb0b67427"><div class="ttname"><a href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">arm_compute::qint16x8_t</a></div><div class="ttdeci">int16x8_t qint16x8_t</div><div class="ttdoc">16 bit fixed point vector with 8 elements </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8h_source.xhtml#l00045">NEFixedPoint.h:45</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="afccf1305c480f2338af8925bba6b54cd"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> vmul_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point vector multiply (8 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 8 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 8 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point vector multiplication. </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00274">274</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+
+<p>Referenced by <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00676">vdiv_qs8()</a>, <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00880">vinvsqrt_qs8()</a>, <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00802">vlog_qs8()</a>, <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00602">vrecip_qs8()</a>, and <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00687">vtaylor_poly_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keyword">const</span> int16x8_t fixed_point_position_s16 = vdupq_n_s16(-fixed_point_position);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> </div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="comment">// Initialize the temporary result with a constant used to round up the result</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <a class="code" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> res = vdupq_n_s16(1 << (fixed_point_position - 1));</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> </div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="comment">// Vector multiply-accumulate long</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  res = vmlal_s8(res, a, b);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> </div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="comment">// Shift right by fixed_point_position</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  res = vshlq_s16(res, fixed_point_position_s16);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> </div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="comment">// Convert back to qint8</span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordflow">return</span> vmovn_s16(res);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a4e15143176bfacdde8b06f4bb0b67427"><div class="ttname"><a href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">arm_compute::qint16x8_t</a></div><div class="ttdeci">int16x8_t qint16x8_t</div><div class="ttdoc">16 bit fixed point vector with 8 elements </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8h_source.xhtml#l00045">NEFixedPoint.h:45</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a3e959a9add1078033f3a27725323df13"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> vmull_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point vector long multiply (8 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 8 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 8 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point long vector multiplication. </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00348">348</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+<div class="fragment"><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="keyword">const</span> int16x8_t fixed_point_position_s16 = vdupq_n_s16(-fixed_point_position);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> </div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <a class="code" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> res = vmull_s8(a, b);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> </div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="keywordflow">return</span> vqrshlq_s16(res, fixed_point_position_s16);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a4e15143176bfacdde8b06f4bb0b67427"><div class="ttname"><a href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">arm_compute::qint16x8_t</a></div><div class="ttdeci">int16x8_t qint16x8_t</div><div class="ttdoc">16 bit fixed point vector with 8 elements </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8h_source.xhtml#l00045">NEFixedPoint.h:45</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a031b17d4102856aa4d6bf7ebf83bf0ab"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> vmulq_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point vector multiply (16 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 8 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 8 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point vector multiplication. </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00291">291</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+
+<p>Referenced by <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00681">vdivq_qs8()</a>, <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00934">vinvsqrtq_qs8()</a>, <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00841">vlogq_qs8()</a>, <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00651">vqrecipq_qs8()</a>, <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00626">vrecipq_qs8()</a>, and <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00719">vtaylor_polyq_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keyword">const</span> int16x8_t fixed_point_position_s16 = vdupq_n_s16(-fixed_point_position);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> </div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="comment">// Initialize the temporary results with a constant used to round up the result</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <a class="code" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> res0 = vdupq_n_s16(1 << (fixed_point_position - 1));</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <a class="code" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> res1 = res0;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> </div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="comment">// Vector multiply-accumulate long</span></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  res0 = vmlal_s8(res0, vget_low_s8(a), vget_low_s8(b));</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  res1 = vmlal_s8(res1, vget_high_s8(a), vget_high_s8(b));</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> </div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="comment">// Shift right by fixed_point_position</span></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  res0 = vshlq_s16(res0, fixed_point_position_s16);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  res1 = vshlq_s16(res1, fixed_point_position_s16);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="comment">// Convert back to qint8</span></div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">return</span> vcombine_s8(vmovn_s16(res0), vmovn_s16(res1));</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a4e15143176bfacdde8b06f4bb0b67427"><div class="ttname"><a href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">arm_compute::qint16x8_t</a></div><div class="ttdeci">int16x8_t qint16x8_t</div><div class="ttdoc">16 bit fixed point vector with 8 elements </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8h_source.xhtml#l00045">NEFixedPoint.h:45</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="ac73b89ba44bae1df9a8998ad2a99996e"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">int16x4_t vpaddl_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point vector saturating pairwise add (8 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>8 bit fixed point input vector</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 16 bit fixed point vector addition. The result is saturated in case of overflow </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00249">249</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">return</span> vpaddl_s8(a);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a1ecd37cd4eb461a98ca7c429e51802d2"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> vpmax_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>b</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point vector pairwise max (8 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 8 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 8 bit fixed point input vector</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point vector pairwise max operation </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00199">199</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">return</span> vpmax_s8(a, b);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="ad3f599d91685017d37e87d36170a5342"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> vpmin_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>b</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point vector pairwise min (8 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 8 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 8 bit fixed point input vector</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point vector pairwise min operation </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00214">214</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> {</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">return</span> vpmin_s8(a, b);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a45c3c1474c3e3ec31ec13efaf6acd261"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">float32x4_t vpowq_f32 </td>
+ <td>(</td>
+ <td class="paramtype">float32x4_t </td>
<td class="paramname"><em>val</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
- <td class="paramtype">const float32x4_t & </td>
+ <td class="paramtype">float32x4_t </td>
<td class="paramname"><em>n</em> </td>
</tr>
<tr>
@@ -7425,22 +13468,22 @@
<p>pow(x,n) = e^(n*log(x))</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramname">val</td><td>Input vector value in F32 format. </td></tr>
- <tr><td class="paramname">n</td><td>Powers to raise the input to.</td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">val</td><td>Input vector value in F32 format. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>Powers to raise the input to.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The calculated power. </dd></dl>
-<p>Definition at line <a class="el" href="_n_e_math_8h_source.xhtml#l00191">191</a> of file <a class="el" href="_n_e_math_8h_source.xhtml">NEMath.h</a>.</p>
+<p>Definition at line <a class="el" href="_n_e_math_8inl_source.xhtml#l00137">137</a> of file <a class="el" href="_n_e_math_8inl_source.xhtml">NEMath.inl</a>.</p>
-<p>References <a class="el" href="_n_e_math_8h_source.xhtml#l00115">vexpq_f32()</a>, and <a class="el" href="_n_e_math_8h_source.xhtml#l00139">vlogq_f32()</a>.</p>
-<div class="fragment"><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute.xhtml#aa197f574e5effe492aa8034651467eb3">vexpq_f32</a>(vmulq_f32(n, <a class="code" href="namespacearm__compute.xhtml#a4082e6868f902da08483e54ec07484c8">vlogq_f32</a>(val)));</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a4082e6868f902da08483e54ec07484c8"><div class="ttname"><a href="namespacearm__compute.xhtml#a4082e6868f902da08483e54ec07484c8">arm_compute::vlogq_f32</a></div><div class="ttdeci">float32x4_t vlogq_f32(const float32x4_t &x)</div><div class="ttdoc">Calculate logarithm. </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_math_8h_source.xhtml#l00139">NEMath.h:139</a></div></div>
-<div class="ttc" id="namespacearm__compute_xhtml_aa197f574e5effe492aa8034651467eb3"><div class="ttname"><a href="namespacearm__compute.xhtml#aa197f574e5effe492aa8034651467eb3">arm_compute::vexpq_f32</a></div><div class="ttdeci">float32x4_t vexpq_f32(const float32x4_t &x)</div><div class="ttdoc">Calculate exponential. </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_math_8h_source.xhtml#l00115">NEMath.h:115</a></div></div>
+<p>References <a class="el" href="_n_e_math_8inl_source.xhtml#l00086">vexpq_f32()</a>, and <a class="el" href="_n_e_math_8inl_source.xhtml#l00104">vlogq_f32()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute.xhtml#ade3ef16de304661943c900ac9a47d28f">vexpq_f32</a>(vmulq_f32(n, <a class="code" href="namespacearm__compute.xhtml#a37a3e03a22ad160a2e9e5c133607e020">vlogq_f32</a>(val)));</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_ade3ef16de304661943c900ac9a47d28f"><div class="ttname"><a href="namespacearm__compute.xhtml#ade3ef16de304661943c900ac9a47d28f">arm_compute::vexpq_f32</a></div><div class="ttdeci">float32x4_t vexpq_f32(float32x4_t x)</div><div class="ttdoc">Calculate exponential. </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_math_8inl_source.xhtml#l00086">NEMath.inl:86</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a37a3e03a22ad160a2e9e5c133607e020"><div class="ttname"><a href="namespacearm__compute.xhtml#a37a3e03a22ad160a2e9e5c133607e020">arm_compute::vlogq_f32</a></div><div class="ttdeci">float32x4_t vlogq_f32(float32x4_t x)</div><div class="ttdoc">Calculate logarithm. </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_math_8inl_source.xhtml#l00104">NEMath.inl:104</a></div></div>
</div><!-- fragment -->
</div>
</div>
-<a class="anchor" id="a9598330b2406691ce6580f7506e62168"></a>
+<a class="anchor" id="a4b2c9440d5fa4909ae909869877f39e3"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
@@ -7448,9 +13491,1585 @@
<td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname">float32x4_t arm_compute::vtanhq_f32 </td>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> vqabs_qs8 </td>
<td>(</td>
- <td class="paramtype">const float32x4_t & </td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Saturating absolute value of 8 bit fixed point vector (8 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>8 bit fixed point input vector</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point vector absolute value </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00179">179</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+
+<p>Referenced by <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00750">vqexp_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">return</span> vqabs_s8(a);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="ac8095edd652a1f3a76bf9d0f4251827a"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> vqabsq_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Saturating absolute value of 8 bit fixed point vector (16 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>8 bit fixed point input vector</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point vector absolute value </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00184">184</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+
+<p>Referenced by <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00776">vqexpq_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">return</span> vqabsq_s8(a);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="ad80ab0f6b783c10e0488cb84a8812e8f"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a82c56f0856f56d430393e6a00baee983">qint16x4_t</a> vqadd_qs16 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a82c56f0856f56d430393e6a00baee983">qint16x4_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a82c56f0856f56d430393e6a00baee983">qint16x4_t</a> </td>
+ <td class="paramname"><em>b</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>16 bit fixed point vector saturating add (4 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 16 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 16 bit fixed point input vector</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 16 bit fixed point vector addition. The result is saturated in case of overflow </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00239">239</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">return</span> vqadd_s16(a, b);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a8a14fe5fc71105c9bfebb28a58f06a52"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> vqadd_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>b</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point vector saturating add (8 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 8 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 8 bit fixed point input vector</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point vector addition. The result is saturated in case of overflow </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00229">229</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+
+<p>Referenced by <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00988">vtanh_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> {</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordflow">return</span> vqadd_s8(a, b);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a9d88750b393cdfe6f5685107bb1d98f7"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> vqaddq_qs16 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> </td>
+ <td class="paramname"><em>b</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>16 bit fixed point vector saturating add (8 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 16 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 16 bit fixed point input vector</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 16 bit fixed point vector addition. The result is saturated in case of overflow </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00244">244</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> {</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">return</span> vqaddq_s16(a, b);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a9765c5ee2d3cc9e3ca983fd2f47ba916"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> vqaddq_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>b</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point vector saturating add (16 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 8 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 8 bit fixed point input vector</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point vector addition. The result is saturated in case of overflow </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00234">234</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+
+<p>Referenced by <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l01001">vtanhq_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> {</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">return</span> vqaddq_s8(a, b);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a635b41196d74b1f2c4d9ee9298444796"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> vqexp_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Calculate saturating exponential fixed point 8bit (8 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>8bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8bit saturating exponential </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00750">750</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+
+<p>References <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00179">vqabs_qs8()</a>, and <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00311">vqmul_qs8()</a>.</p>
+
+<p>Referenced by <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00988">vtanh_qs8()</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="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> shift_value = vdup_n_s8(fixed_point_position - 7);</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> const_one = vdup_n_s8(1 << fixed_point_position);</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> const_ln2 = vqrshl_s8(vdup_n_s8(0x58), shift_value); <span class="comment">// ln(2)</span></div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> const_inv_ln2 = vorr_s8(vqrshl_s8(vdup_n_s8(0x38), shift_value), const_one); <span class="comment">// 1/ln(2)</span></div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span> </div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  <span class="comment">// Perform range reduction [-log(2),log(2)]</span></div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> m = <a class="code" href="namespacearm__compute.xhtml#a746205173d1a1f3955fa0c26b5be3b10">vqmul_qs8</a>(a, const_inv_ln2, fixed_point_position); <span class="comment">// x / ln(2)</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">// get decimal part from m</span></div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> dec_m = vqshl_s8(m, vdup_n_s8(-fixed_point_position));</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>  <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> alpha = <a class="code" href="namespacearm__compute.xhtml#a746205173d1a1f3955fa0c26b5be3b10">vqmul_qs8</a>(vqshl_s8(dec_m, vdup_n_s8(fixed_point_position)), const_ln2, fixed_point_position);</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  alpha = <a class="code" href="namespacearm__compute.xhtml#a4b2c9440d5fa4909ae909869877f39e3">vqabs_qs8</a>(vqsub_s8(a, alpha));</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">// Polynomial Approximation</span></div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> poly = vqtaylor_poly_qs8<false>(alpha, fixed_point_position);</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  poly = vqadd_s8(poly, const_one);</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span> </div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  <span class="comment">// Reconstruct</span></div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  poly = vqshl_s8(poly, dec_m);</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span> </div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  <span class="keywordflow">return</span> poly;</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a4b2c9440d5fa4909ae909869877f39e3"><div class="ttname"><a href="namespacearm__compute.xhtml#a4b2c9440d5fa4909ae909869877f39e3">arm_compute::vqabs_qs8</a></div><div class="ttdeci">qint8x8_t vqabs_qs8(qint8x8_t a)</div><div class="ttdoc">Saturating absolute value of 8 bit fixed point vector (8 elements) </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00179">NEFixedPoint.inl:179</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a746205173d1a1f3955fa0c26b5be3b10"><div class="ttname"><a href="namespacearm__compute.xhtml#a746205173d1a1f3955fa0c26b5be3b10">arm_compute::vqmul_qs8</a></div><div class="ttdeci">qint8x8_t vqmul_qs8(qint8x8_t a, qint8x8_t b, int fixed_point_position)</div><div class="ttdoc">8 bit fixed point vector saturating multiply (8 elements) </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00311">NEFixedPoint.inl:311</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a16a1bee14f1db073f75caa76dacf5078"><div class="ttname"><a href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">arm_compute::qint8x8_t</a></div><div class="ttdeci">int8x8_t qint8x8_t</div><div class="ttdoc">8 bit fixed point vector with 8 elements </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8h_source.xhtml#l00033">NEFixedPoint.h:33</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="ae6cf1822b8fbad305677650a2b751247"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> vqexpq_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Calculate saturating exponential fixed point 8bit (16 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>8bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8bit saturating exponential </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00776">776</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+
+<p>References <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00184">vqabsq_qs8()</a>, <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00328">vqmulq_qs8()</a>, and <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00269">vqsubq_qs8()</a>.</p>
+
+<p>Referenced by <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l01014">vqpowq_qs8()</a>, and <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l01001">vtanhq_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00777"></a><span class="lineno"> 777</span> {</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> shift_value = vdupq_n_s8(fixed_point_position - 7);</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> const_one = vdupq_n_s8(1 << fixed_point_position);</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> const_ln2 = vqrshlq_s8(vdupq_n_s8(0x58), shift_value); <span class="comment">// ln(2)</span></div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> const_inv_ln2 = vorrq_s8(vqrshlq_s8(vdupq_n_s8(0x38), shift_value), const_one); <span class="comment">// 1/ln(2)</span></div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span> </div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  <span class="comment">// Perform range reduction [-log(2),log(2)]</span></div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> m = <a class="code" href="namespacearm__compute.xhtml#a081c0605c83155125ad95a144a1d6071">vqmulq_qs8</a>(a, const_inv_ln2, fixed_point_position); <span class="comment">// x / ln(2)</span></div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span> </div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  <span class="comment">// get decimal part from m</span></div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> dec_m = vqshlq_s8(m, vdupq_n_s8(-fixed_point_position));</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span> </div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> alpha = <a class="code" href="namespacearm__compute.xhtml#a081c0605c83155125ad95a144a1d6071">vqmulq_qs8</a>(vqshlq_s8(dec_m, vdupq_n_s8(fixed_point_position)), const_ln2, fixed_point_position);</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  alpha = <a class="code" href="namespacearm__compute.xhtml#ac8095edd652a1f3a76bf9d0f4251827a">vqabsq_qs8</a>(<a class="code" href="namespacearm__compute.xhtml#ab2a6ce3d8239e49c81af1ebc617680b4">vqsubq_qs8</a>(a, alpha));</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span> </div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  <span class="comment">// Polynomial Approximation</span></div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> poly = vqtaylor_polyq_qs8<false>(alpha, fixed_point_position);</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  poly = vqaddq_s8(poly, const_one);</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span> </div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  <span class="comment">// Reconstruct</span></div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  poly = vqshlq_s8(poly, dec_m);</div><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="keywordflow">return</span> poly;</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a5b99ed49abd6b7bf13dafdd17bcef855"><div class="ttname"><a href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">arm_compute::qint8x16_t</a></div><div class="ttdeci">int8x16_t qint8x16_t</div><div class="ttdoc">8 bit fixed point vector with 16 elements </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8h_source.xhtml#l00037">NEFixedPoint.h:37</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_ac8095edd652a1f3a76bf9d0f4251827a"><div class="ttname"><a href="namespacearm__compute.xhtml#ac8095edd652a1f3a76bf9d0f4251827a">arm_compute::vqabsq_qs8</a></div><div class="ttdeci">qint8x16_t vqabsq_qs8(qint8x16_t a)</div><div class="ttdoc">Saturating absolute value of 8 bit fixed point vector (16 elements) </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00184">NEFixedPoint.inl:184</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a081c0605c83155125ad95a144a1d6071"><div class="ttname"><a href="namespacearm__compute.xhtml#a081c0605c83155125ad95a144a1d6071">arm_compute::vqmulq_qs8</a></div><div class="ttdeci">qint8x16_t vqmulq_qs8(qint8x16_t a, qint8x16_t b, int fixed_point_position)</div><div class="ttdoc">8 bit fixed point vector saturating multiply (16 elements) </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00328">NEFixedPoint.inl:328</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_ab2a6ce3d8239e49c81af1ebc617680b4"><div class="ttname"><a href="namespacearm__compute.xhtml#ab2a6ce3d8239e49c81af1ebc617680b4">arm_compute::vqsubq_qs8</a></div><div class="ttdeci">qint8x16_t vqsubq_qs8(qint8x16_t a, qint8x16_t b)</div><div class="ttdoc">8 bit fixed point vector saturating subtraction (16 elements) </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00269">NEFixedPoint.inl:269</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a5ddc3dc4b4ee6847fd96c6a8599e20e4"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> vqinvsqrt_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Calculate saturating inverse square root for fixed point 8bit using Newton-Raphosn method (8 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>8bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8bit inverse sqrt. </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00907">907</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+
+<p>References <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00140">vdup_n_qs8()</a>, and <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00311">vqmul_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00908"></a><span class="lineno"> 908</span> {</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> const_three = vdup_n_s8(3 << fixed_point_position);</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span> </div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  <span class="comment">// Find shift value. Number must be in (0.5, 2) range.</span></div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> shift_value = vneg_s8(vqsub_s8(vdup_n_s8(8), vadd_s8(vclz_s8(a), vdup_n_s8(fixed_point_position))));</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span> </div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  <span class="comment">// Add one when the shift value is negative in order to get the correct result when we shift right with 1</span></div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> temp = vsub_s8(vdup_n_s8(8), vadd_s8(vclz_s8(a), vdup_n_s8(fixed_point_position)));</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  uint8x8_t temp_ltz = vclt_s8(temp, <a class="code" href="namespacearm__compute.xhtml#a1a226812e3cfdf3494adbdd92d4a1cb3">vdup_n_qs8</a>(0));</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  temp = vbsl_s8(temp_ltz, vadd_s8(temp, vdup_n_s8(1)), temp);</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> shift_value2 = vneg_s8(vshr_n_s8(temp, 1));</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span> </div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  temp = vshl_s8(a, shift_value);</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span> </div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  <span class="comment">// Initial guess</span></div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> x = temp;</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span> </div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  <span class="comment">// Calculate (x / 2) * (3 - a * x^2)</span></div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  <span class="comment">// After three iterations we have the result for 8 bit</span></div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  x = vshr_n_s8(<a class="code" href="namespacearm__compute.xhtml#a746205173d1a1f3955fa0c26b5be3b10">vqmul_qs8</a>(x, vqsub_s8(const_three, <a class="code" href="namespacearm__compute.xhtml#a746205173d1a1f3955fa0c26b5be3b10">vqmul_qs8</a>(temp, <a class="code" href="namespacearm__compute.xhtml#a746205173d1a1f3955fa0c26b5be3b10">vqmul_qs8</a>(x, x, fixed_point_position), fixed_point_position)), fixed_point_position), 1);</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  x = vshr_n_s8(<a class="code" href="namespacearm__compute.xhtml#a746205173d1a1f3955fa0c26b5be3b10">vqmul_qs8</a>(x, vqsub_s8(const_three, <a class="code" href="namespacearm__compute.xhtml#a746205173d1a1f3955fa0c26b5be3b10">vqmul_qs8</a>(temp, <a class="code" href="namespacearm__compute.xhtml#a746205173d1a1f3955fa0c26b5be3b10">vqmul_qs8</a>(x, x, fixed_point_position), fixed_point_position)), fixed_point_position), 1);</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  x = vshr_n_s8(<a class="code" href="namespacearm__compute.xhtml#a746205173d1a1f3955fa0c26b5be3b10">vqmul_qs8</a>(x, vqsub_s8(const_three, <a class="code" href="namespacearm__compute.xhtml#a746205173d1a1f3955fa0c26b5be3b10">vqmul_qs8</a>(temp, <a class="code" href="namespacearm__compute.xhtml#a746205173d1a1f3955fa0c26b5be3b10">vqmul_qs8</a>(x, x, fixed_point_position), fixed_point_position)), fixed_point_position), 1);</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span> </div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  <span class="keywordflow">return</span> vshl_s8(x, shift_value2);</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a746205173d1a1f3955fa0c26b5be3b10"><div class="ttname"><a href="namespacearm__compute.xhtml#a746205173d1a1f3955fa0c26b5be3b10">arm_compute::vqmul_qs8</a></div><div class="ttdeci">qint8x8_t vqmul_qs8(qint8x8_t a, qint8x8_t b, int fixed_point_position)</div><div class="ttdoc">8 bit fixed point vector saturating multiply (8 elements) </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00311">NEFixedPoint.inl:311</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a1a226812e3cfdf3494adbdd92d4a1cb3"><div class="ttname"><a href="namespacearm__compute.xhtml#a1a226812e3cfdf3494adbdd92d4a1cb3">arm_compute::vdup_n_qs8</a></div><div class="ttdeci">qint8x8_t vdup_n_qs8(qint8_t a)</div><div class="ttdoc">8 bit fixed point vector duplicate (8 elements) </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00140">NEFixedPoint.inl:140</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a16a1bee14f1db073f75caa76dacf5078"><div class="ttname"><a href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">arm_compute::qint8x8_t</a></div><div class="ttdeci">int8x8_t qint8x8_t</div><div class="ttdoc">8 bit fixed point vector with 8 elements </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8h_source.xhtml#l00033">NEFixedPoint.h:33</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="ad5d5110467053814882fb616c6cb855b"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> vqinvsqrtq_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Calculate saturating inverse square root for fixed point 8bit using Newton-Raphosn method (16 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>8bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8bit inverse sqrt. </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00961">961</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+
+<p>References <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00145">vdupq_n_qs8()</a>, and <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00328">vqmulq_qs8()</a>.</p>
+<div class="fragment"><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="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> const_three = vdupq_n_s8(3 << fixed_point_position);</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span> </div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  <span class="comment">// Find shift value. Number must be in (0.5, 2) range.</span></div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> shift_value = vnegq_s8(vqsubq_s8(vdupq_n_s8(8), vaddq_s8(vclzq_s8(a), vdupq_n_s8(fixed_point_position))));</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span> </div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  <span class="comment">// Add one when the shift value is negative in order to get the correct result when we shift right with 1</span></div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> temp = vsubq_s8(vdupq_n_s8(8), vaddq_s8(vclzq_s8(a), vdupq_n_s8(fixed_point_position)));</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  uint8x16_t temp_ltz = vcltq_s8(temp, <a class="code" href="namespacearm__compute.xhtml#adbd4df93ed00fcda54f91e669ea2be04">vdupq_n_qs8</a>(0));</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  temp = vbslq_s8(temp_ltz, vaddq_s8(temp, vdupq_n_s8(1)), temp);</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> shift_value2 = vnegq_s8(vshrq_n_s8(temp, 1));</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span> </div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  temp = vshlq_s8(a, shift_value);</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span> </div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>  <span class="comment">// Initial guess</span></div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>  <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> x = temp;</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span> </div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  <span class="comment">// Calculate (x / 2) * (3 - a * x^2)</span></div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>  <span class="comment">// After three iterations we have the result for 8 bit</span></div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  x = vshrq_n_s8(<a class="code" href="namespacearm__compute.xhtml#a081c0605c83155125ad95a144a1d6071">vqmulq_qs8</a>(x, vqsubq_s8(const_three, <a class="code" href="namespacearm__compute.xhtml#a081c0605c83155125ad95a144a1d6071">vqmulq_qs8</a>(temp, <a class="code" href="namespacearm__compute.xhtml#a081c0605c83155125ad95a144a1d6071">vqmulq_qs8</a>(x, x, fixed_point_position), fixed_point_position)), fixed_point_position), 1);</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  x = vshrq_n_s8(<a class="code" href="namespacearm__compute.xhtml#a081c0605c83155125ad95a144a1d6071">vqmulq_qs8</a>(x, vqsubq_s8(const_three, <a class="code" href="namespacearm__compute.xhtml#a081c0605c83155125ad95a144a1d6071">vqmulq_qs8</a>(temp, <a class="code" href="namespacearm__compute.xhtml#a081c0605c83155125ad95a144a1d6071">vqmulq_qs8</a>(x, x, fixed_point_position), fixed_point_position)), fixed_point_position), 1);</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  x = vshrq_n_s8(<a class="code" href="namespacearm__compute.xhtml#a081c0605c83155125ad95a144a1d6071">vqmulq_qs8</a>(x, vqsubq_s8(const_three, <a class="code" href="namespacearm__compute.xhtml#a081c0605c83155125ad95a144a1d6071">vqmulq_qs8</a>(temp, <a class="code" href="namespacearm__compute.xhtml#a081c0605c83155125ad95a144a1d6071">vqmulq_qs8</a>(x, x, fixed_point_position), fixed_point_position)), fixed_point_position), 1);</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span> </div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  <span class="keywordflow">return</span> vshlq_s8(x, shift_value2);</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a5b99ed49abd6b7bf13dafdd17bcef855"><div class="ttname"><a href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">arm_compute::qint8x16_t</a></div><div class="ttdeci">int8x16_t qint8x16_t</div><div class="ttdoc">8 bit fixed point vector with 16 elements </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8h_source.xhtml#l00037">NEFixedPoint.h:37</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_adbd4df93ed00fcda54f91e669ea2be04"><div class="ttname"><a href="namespacearm__compute.xhtml#adbd4df93ed00fcda54f91e669ea2be04">arm_compute::vdupq_n_qs8</a></div><div class="ttdeci">qint8x16_t vdupq_n_qs8(qint8_t a)</div><div class="ttdoc">8 bit fixed point vector duplicate (16 elements) </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00145">NEFixedPoint.inl:145</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a081c0605c83155125ad95a144a1d6071"><div class="ttname"><a href="namespacearm__compute.xhtml#a081c0605c83155125ad95a144a1d6071">arm_compute::vqmulq_qs8</a></div><div class="ttdeci">qint8x16_t vqmulq_qs8(qint8x16_t a, qint8x16_t b, int fixed_point_position)</div><div class="ttdoc">8 bit fixed point vector saturating multiply (16 elements) </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00328">NEFixedPoint.inl:328</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="ac6cb55578e8ff1f3c20aa50f2e728679"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> vqmla_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point vector saturating multiply-accumulate (8 elements). </p>
+<p>This operation performs the product between <code>b</code> and <code>c</code> and add the result to <code>a</code> (a + b * c).</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 8 bit fixed point input vector where the result of multiplication must be added to </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 8 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">c</td><td>Third 8 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point vector multiply-accumulate. The result is saturated in case of overflow </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00394">394</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00395"></a><span class="lineno"> 395</span> {</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="keyword">const</span> int16x8_t fixed_point_position_s16 = vdupq_n_s16(-fixed_point_position);</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span> </div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="comment">// Initialize the temporary results with a constant used to round up the result</span></div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <a class="code" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> tmp = vdupq_n_s16(1 << (fixed_point_position - 1));</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span> </div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="comment">// Vector multiply-accumulate long</span></div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  tmp = vmlal_s8(tmp, b, c);</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span> </div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="comment">// Shift right by fixed_point_position</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  tmp = vqshlq_s16(tmp, fixed_point_position_s16);</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span> </div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="comment">// Convert back to qint8 and accumulate</span></div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="keywordflow">return</span> vqadd_s8(a, vqmovn_s16(tmp));</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a4e15143176bfacdde8b06f4bb0b67427"><div class="ttname"><a href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">arm_compute::qint16x8_t</a></div><div class="ttdeci">int16x8_t qint16x8_t</div><div class="ttdoc">16 bit fixed point vector with 8 elements </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8h_source.xhtml#l00045">NEFixedPoint.h:45</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="aedfa26202753ca9db96ae3bcb51b14b0"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> vqmlal_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point vector saturating multiply-accumulate long (8 elements). </p>
+<p>The saturation is performed on the 16 bit fixed point output vector. This operation performs the product between <code>b</code> and <code>c</code> and add the result to the 16 bit fixed point vector <code>a</code> (a + b * c). 8 elements</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 16 bit fixed point input vector where the result of multiplication must be added to </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 8 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">c</td><td>Third 8 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point vector multiply-accumulate long </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00449">449</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00450"></a><span class="lineno"> 450</span> {</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keyword">const</span> int16x8_t fixed_point_position_s16 = vdupq_n_s16(-fixed_point_position);</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> </div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="comment">// Initialize the temporary results with a constant used to round up the result</span></div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <a class="code" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> tmp = vdupq_n_s16(1 << (fixed_point_position - 1));</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span> </div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="comment">// Vector multiply-accumulate long</span></div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  tmp = vmlal_s8(tmp, b, c);</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span> </div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <span class="comment">// Shift right by fixed_point_position</span></div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  tmp = vqshlq_s16(tmp, fixed_point_position_s16);</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span> </div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="comment">// Accumulate</span></div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="keywordflow">return</span> vqaddq_s16(a, tmp);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a4e15143176bfacdde8b06f4bb0b67427"><div class="ttname"><a href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">arm_compute::qint16x8_t</a></div><div class="ttdeci">int16x8_t qint16x8_t</div><div class="ttdoc">16 bit fixed point vector with 8 elements </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8h_source.xhtml#l00045">NEFixedPoint.h:45</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a037ac8df4a7e30a455a97218b88b67ad"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> vqmlaq_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point vector saturating multiply-accumulate (16 elements). </p>
+<p>This operation performs the product between <code>b</code> and <code>c</code> and add the result to <code>a</code> (a + b * c).</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 8 bit fixed point input vector where the result of multiplication must be added to </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 8 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">c</td><td>Third 8 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point vector multiply-accumulate.The result is saturated in case of overflow </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00411">411</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00412"></a><span class="lineno"> 412</span> {</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keyword">const</span> int16x8_t fixed_point_position_s16 = vdupq_n_s16(-fixed_point_position);</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span> </div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="comment">// Initialize the temporary results with a constant used to round up the result</span></div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <a class="code" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> tmp0 = vdupq_n_s16(1 << (fixed_point_position - 1));</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <a class="code" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> tmp1 = tmp0;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> </div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <span class="comment">// Vector multiply-accumulate long</span></div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  tmp0 = vmlal_s8(tmp0, vget_low_s8(b), vget_low_s8(c));</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  tmp1 = vmlal_s8(tmp1, vget_high_s8(b), vget_high_s8(c));</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span> </div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="comment">// Shift right by fixed_point_position</span></div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  tmp0 = vqshlq_s16(tmp0, fixed_point_position_s16);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  tmp1 = vqshlq_s16(tmp1, fixed_point_position_s16);</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span> </div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="comment">// Convert back to qint8 and accumulate</span></div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> res = vcombine_s8(vqmovn_s16(tmp0), vqmovn_s16(tmp1));</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="keywordflow">return</span> vqaddq_s8(a, res);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a5b99ed49abd6b7bf13dafdd17bcef855"><div class="ttname"><a href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">arm_compute::qint8x16_t</a></div><div class="ttdeci">int8x16_t qint8x16_t</div><div class="ttdoc">8 bit fixed point vector with 16 elements </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8h_source.xhtml#l00037">NEFixedPoint.h:37</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a4e15143176bfacdde8b06f4bb0b67427"><div class="ttname"><a href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">arm_compute::qint16x8_t</a></div><div class="ttdeci">int16x8_t qint16x8_t</div><div class="ttdoc">16 bit fixed point vector with 8 elements </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8h_source.xhtml#l00045">NEFixedPoint.h:45</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a92c2d0b9a8eeb3ab04a39a25fef2b6c3"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> arm_compute::vqmovn_q16 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> </td>
+ <td class="paramname"><em>a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>16 bit fixed point vector saturating narrow (8 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>16 bit fixed point vector to convert</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>8 bit fixed point vector </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="aa9a56a13e02fa346fcbe59257b2cef74"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> arm_compute::vqmovn_qs16 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> </td>
+ <td class="paramname"><em>a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00135">135</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">return</span> vqmovn_s16(a);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a746205173d1a1f3955fa0c26b5be3b10"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> vqmul_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point vector saturating multiply (8 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 8 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 8 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point vector multiplication. The result is saturated in case of overflow </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00311">311</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+
+<p>Referenced by <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00750">vqexp_qs8()</a>, <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00907">vqinvsqrt_qs8()</a>, <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00703">vqtaylor_poly_qs8()</a>, and <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00988">vtanh_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keyword">const</span> int16x8_t fixed_point_position_s16 = vdupq_n_s16(-fixed_point_position);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> </div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="comment">// Initialize the temporary result with a constant used to round up the result</span></div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <a class="code" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> res = vdupq_n_s16(1 << (fixed_point_position - 1));</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> </div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="comment">// Vector multiply-accumulate long</span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  res = vmlal_s8(res, a, b);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> </div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="comment">// Shift right by fixed_point_position</span></div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  res = vqshlq_s16(res, fixed_point_position_s16);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span> </div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="comment">// Convert back to qint8 and saturate</span></div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keywordflow">return</span> vqmovn_s16(res);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a4e15143176bfacdde8b06f4bb0b67427"><div class="ttname"><a href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">arm_compute::qint16x8_t</a></div><div class="ttdeci">int16x8_t qint16x8_t</div><div class="ttdoc">16 bit fixed point vector with 8 elements </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8h_source.xhtml#l00045">NEFixedPoint.h:45</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a081c0605c83155125ad95a144a1d6071"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> vqmulq_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point vector saturating multiply (16 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 8 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 8 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point vector multiplication. The result is saturated in case of overflow </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00328">328</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+
+<p>Referenced by <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00776">vqexpq_qs8()</a>, <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00961">vqinvsqrtq_qs8()</a>, <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l01014">vqpowq_qs8()</a>, <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00651">vqrecipq_qs8()</a>, <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00735">vqtaylor_polyq_qs8()</a>, and <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l01001">vtanhq_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> {</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keyword">const</span> int16x8_t fixed_point_position_s16 = vdupq_n_s16(-fixed_point_position);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> </div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="comment">// Initialize the temporary results with a constant used to round up the result</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <a class="code" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> res0 = vdupq_n_s16(1 << (fixed_point_position - 1));</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <a class="code" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> res1 = res0;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> </div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="comment">// Vector multiply-accumulate long</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  res0 = vmlal_s8(res0, vget_low_s8(a), vget_low_s8(b));</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  res1 = vmlal_s8(res1, vget_high_s8(a), vget_high_s8(b));</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> </div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="comment">// Shift right by fixed_point_position</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  res0 = vqshlq_s16(res0, fixed_point_position_s16);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  res1 = vqshlq_s16(res1, fixed_point_position_s16);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> </div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="comment">// Convert back to qint8 and saturate</span></div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="keywordflow">return</span> vcombine_s8(vqmovn_s16(res0), vqmovn_s16(res1));</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a4e15143176bfacdde8b06f4bb0b67427"><div class="ttname"><a href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">arm_compute::qint16x8_t</a></div><div class="ttdeci">int16x8_t qint16x8_t</div><div class="ttdoc">16 bit fixed point vector with 8 elements </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8h_source.xhtml#l00045">NEFixedPoint.h:45</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a7214e62803b7c5c347124a5ec5ade4e2"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> arm_compute::vqpowq_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Calculate saturating n power for fixed point 8bit (16 elements). </p>
+<p>pow(a,b) = e^(b*log(a))</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>8bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>8bit fixed point power vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8bit power. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a0d4cef7d7331ac5a216d8bd3000564db"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> arm_compute::vqpowq_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l01014">1014</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+
+<p>References <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00841">vlogq_qs8()</a>, <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00776">vqexpq_qs8()</a>, and <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00328">vqmulq_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span> {</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>  <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute.xhtml#ae6cf1822b8fbad305677650a2b751247">vqexpq_qs8</a>(<a class="code" href="namespacearm__compute.xhtml#a081c0605c83155125ad95a144a1d6071">vqmulq_qs8</a>(b, <a class="code" href="namespacearm__compute.xhtml#a340b9cd5ad88f1a821498c6fad80e82c">vlogq_qs8</a>(a, fixed_point_position), fixed_point_position), fixed_point_position);</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a340b9cd5ad88f1a821498c6fad80e82c"><div class="ttname"><a href="namespacearm__compute.xhtml#a340b9cd5ad88f1a821498c6fad80e82c">arm_compute::vlogq_qs8</a></div><div class="ttdeci">qint8x16_t vlogq_qs8(qint8x16_t a, int fixed_point_position)</div><div class="ttdoc">Calculate logarithm fixed point 16bit (16 elements) </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00841">NEFixedPoint.inl:841</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_ae6cf1822b8fbad305677650a2b751247"><div class="ttname"><a href="namespacearm__compute.xhtml#ae6cf1822b8fbad305677650a2b751247">arm_compute::vqexpq_qs8</a></div><div class="ttdeci">qint8x16_t vqexpq_qs8(qint8x16_t a, int fixed_point_position)</div><div class="ttdoc">Calculate saturating exponential fixed point 8bit (16 elements) </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00776">NEFixedPoint.inl:776</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a081c0605c83155125ad95a144a1d6071"><div class="ttname"><a href="namespacearm__compute.xhtml#a081c0605c83155125ad95a144a1d6071">arm_compute::vqmulq_qs8</a></div><div class="ttdeci">qint8x16_t vqmulq_qs8(qint8x16_t a, qint8x16_t b, int fixed_point_position)</div><div class="ttdoc">8 bit fixed point vector saturating multiply (16 elements) </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00328">NEFixedPoint.inl:328</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a3dd4382391c752128ab7b3a6dd68314b"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> arm_compute::vqrecipq_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00651">651</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+
+<p>References <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00291">vmulq_qs8()</a>, <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00328">vqmulq_qs8()</a>, and <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00269">vqsubq_qs8()</a>.</p>
+
+<p>Referenced by <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l01001">vtanhq_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00652"></a><span class="lineno"> 652</span> {</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  <span class="comment">// We need two bits to store 2, thus we can only support formats from Q2.5 to Q7.0</span></div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> const_48_over_17 = vdupq_n_s8(0x7A >> (5 - fixed_point_position)); <span class="comment">// 2.823</span></div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> const_minus_32_over_17 = vdupq_n_s8((0x3C >> (5 - fixed_point_position))); <span class="comment">// -1.8823</span></div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> const_one = vdupq_n_s8(1 << fixed_point_position);</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">// Find shift value</span></div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> shift_value = vqnegq_s8(vqsubq_s8(vdupq_n_s8(8), vqaddq_s8(vclzq_s8(a), vdupq_n_s8(fixed_point_position))));</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> temp = vqshlq_s8(a, shift_value);</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span> </div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> x = <a class="code" href="namespacearm__compute.xhtml#ab2a6ce3d8239e49c81af1ebc617680b4">vqsubq_qs8</a>(const_48_over_17, <a class="code" href="namespacearm__compute.xhtml#a031b17d4102856aa4d6bf7ebf83bf0ab">vmulq_qs8</a>(temp, const_minus_32_over_17, fixed_point_position));</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span> </div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  <span class="comment">// Set initial guess to one if x > 1</span></div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  uint8x16_t set_one = vcgtq_s8(x, const_one);</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  x = vbslq_s8(set_one, const_one, x);</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span> </div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  <span class="comment">// Use three iterations of Newton-Raphson method to get the result</span></div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  x = vqaddq_s8(x, <a class="code" href="namespacearm__compute.xhtml#a081c0605c83155125ad95a144a1d6071">vqmulq_qs8</a>(x, vqsubq_s8(const_one, <a class="code" href="namespacearm__compute.xhtml#a081c0605c83155125ad95a144a1d6071">vqmulq_qs8</a>(temp, x, fixed_point_position)), fixed_point_position));</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  x = vqaddq_s8(x, <a class="code" href="namespacearm__compute.xhtml#a081c0605c83155125ad95a144a1d6071">vqmulq_qs8</a>(x, vqsubq_s8(const_one, <a class="code" href="namespacearm__compute.xhtml#a081c0605c83155125ad95a144a1d6071">vqmulq_qs8</a>(temp, x, fixed_point_position)), fixed_point_position));</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  x = vqaddq_s8(x, <a class="code" href="namespacearm__compute.xhtml#a081c0605c83155125ad95a144a1d6071">vqmulq_qs8</a>(x, vqsubq_s8(const_one, <a class="code" href="namespacearm__compute.xhtml#a081c0605c83155125ad95a144a1d6071">vqmulq_qs8</a>(temp, x, fixed_point_position)), fixed_point_position));</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span> </div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  <span class="keywordflow">return</span> vqshlq_s8(x, shift_value);</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a5b99ed49abd6b7bf13dafdd17bcef855"><div class="ttname"><a href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">arm_compute::qint8x16_t</a></div><div class="ttdeci">int8x16_t qint8x16_t</div><div class="ttdoc">8 bit fixed point vector with 16 elements </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8h_source.xhtml#l00037">NEFixedPoint.h:37</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a031b17d4102856aa4d6bf7ebf83bf0ab"><div class="ttname"><a href="namespacearm__compute.xhtml#a031b17d4102856aa4d6bf7ebf83bf0ab">arm_compute::vmulq_qs8</a></div><div class="ttdeci">qint8x16_t vmulq_qs8(qint8x16_t a, qint8x16_t b, int fixed_point_position)</div><div class="ttdoc">8 bit fixed point vector multiply (16 elements) </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00291">NEFixedPoint.inl:291</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a081c0605c83155125ad95a144a1d6071"><div class="ttname"><a href="namespacearm__compute.xhtml#a081c0605c83155125ad95a144a1d6071">arm_compute::vqmulq_qs8</a></div><div class="ttdeci">qint8x16_t vqmulq_qs8(qint8x16_t a, qint8x16_t b, int fixed_point_position)</div><div class="ttdoc">8 bit fixed point vector saturating multiply (16 elements) </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00328">NEFixedPoint.inl:328</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_ab2a6ce3d8239e49c81af1ebc617680b4"><div class="ttname"><a href="namespacearm__compute.xhtml#ab2a6ce3d8239e49c81af1ebc617680b4">arm_compute::vqsubq_qs8</a></div><div class="ttdeci">qint8x16_t vqsubq_qs8(qint8x16_t a, qint8x16_t b)</div><div class="ttdoc">8 bit fixed point vector saturating subtraction (16 elements) </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00269">NEFixedPoint.inl:269</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a5b1437029acce06690a938e09f5a762a"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> vqsub_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>b</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point vector saturating subtraction (8 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 8 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 8 bit fixed point input vector</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point vector subtraction. The result is saturated in case of overflow </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00264">264</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+
+<p>Referenced by <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00988">vtanh_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordflow">return</span> vqsub_s8(a, b);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="ab2a6ce3d8239e49c81af1ebc617680b4"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> vqsubq_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>b</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point vector saturating subtraction (16 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 8 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 8 bit fixed point input vector</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point vector subtraction. The result is saturated in case of overflow </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00269">269</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+
+<p>Referenced by <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00776">vqexpq_qs8()</a>, <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00651">vqrecipq_qs8()</a>, and <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l01001">vtanhq_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">return</span> vqsubq_s8(a, b);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a3d36b520df07b909b027685ddc8e67c0"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> arm_compute::vqtaylor_poly_qs8 </td>
+ <td>(</td>
+ <td class="paramtype">int8x8_t </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00703">703</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+
+<p>References <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa7fc56270e7a70fa81a5935b72eacbe29">A</a>, <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571">B</a>, and <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00311">vqmul_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00704"></a><span class="lineno"> 704</span> {</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> shift_value = vdup_n_s8(-(7 - fixed_point_position));</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> const_one = vdup_n_s8(1);</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa7fc56270e7a70fa81a5935b72eacbe29">A</a> = vqrshl_s8(islog ? <a class="code" href="namespacearm__compute.xhtml#af6bad6fafc33437f617e27d063aea07d">log_tab_qs8</a>[0] : <a class="code" href="namespacearm__compute.xhtml#a6f13dc0738b4cc6b51ed1e35fe616bd0">exp_tab_qs8</a>[0], islog ? vqadd_s8(shift_value, const_one) : shift_value);</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571">B</a> = vqrshl_s8(islog ? <a class="code" href="namespacearm__compute.xhtml#af6bad6fafc33437f617e27d063aea07d">log_tab_qs8</a>[1] : exp_tab_qs8[1], shift_value);</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> C = vqrshl_s8(islog ? <a class="code" href="namespacearm__compute.xhtml#af6bad6fafc33437f617e27d063aea07d">log_tab_qs8</a>[2] : exp_tab_qs8[2], shift_value);</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> D = vqrshl_s8(islog ? <a class="code" href="namespacearm__compute.xhtml#af6bad6fafc33437f617e27d063aea07d">log_tab_qs8</a>[3] : exp_tab_qs8[3], shift_value);</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> x1 = vqadd_s8(<a class="code" href="namespacearm__compute.xhtml#a746205173d1a1f3955fa0c26b5be3b10">vqmul_qs8</a>(a, D, fixed_point_position), C);</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> x2 = vqadd_s8(<a class="code" href="namespacearm__compute.xhtml#a746205173d1a1f3955fa0c26b5be3b10">vqmul_qs8</a>(a, x1, fixed_point_position), B);</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> x3 = vqadd_s8(<a class="code" href="namespacearm__compute.xhtml#a746205173d1a1f3955fa0c26b5be3b10">vqmul_qs8</a>(a, x2, fixed_point_position), A);</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> res = <a class="code" href="namespacearm__compute.xhtml#a746205173d1a1f3955fa0c26b5be3b10">vqmul_qs8</a>(a, x3, fixed_point_position);</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  <span class="keywordflow">return</span> res;</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a1ce9b523fd4f3b5bbcadcd796183455aa7fc56270e7a70fa81a5935b72eacbe29"><div class="ttname"><a href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa7fc56270e7a70fa81a5935b72eacbe29">arm_compute::Channel::A</a></div><div class="ttdoc">Alpha channel. </div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571"><div class="ttname"><a href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571">arm_compute::Channel::B</a></div><div class="ttdoc">Blue channel. </div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a746205173d1a1f3955fa0c26b5be3b10"><div class="ttname"><a href="namespacearm__compute.xhtml#a746205173d1a1f3955fa0c26b5be3b10">arm_compute::vqmul_qs8</a></div><div class="ttdeci">qint8x8_t vqmul_qs8(qint8x8_t a, qint8x8_t b, int fixed_point_position)</div><div class="ttdoc">8 bit fixed point vector saturating multiply (8 elements) </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00311">NEFixedPoint.inl:311</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_af6bad6fafc33437f617e27d063aea07d"><div class="ttname"><a href="namespacearm__compute.xhtml#af6bad6fafc33437f617e27d063aea07d">arm_compute::log_tab_qs8</a></div><div class="ttdeci">const std::array< qint8x8_t, 4 > log_tab_qs8</div><div class="ttdoc">Logarithm polynomial coefficients for 8 bit fixed point (16 elements) Format is in Q0...</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00053">NEFixedPoint.inl:53</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a16a1bee14f1db073f75caa76dacf5078"><div class="ttname"><a href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">arm_compute::qint8x8_t</a></div><div class="ttdeci">int8x8_t qint8x8_t</div><div class="ttdoc">8 bit fixed point vector with 8 elements </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8h_source.xhtml#l00033">NEFixedPoint.h:33</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a6f13dc0738b4cc6b51ed1e35fe616bd0"><div class="ttname"><a href="namespacearm__compute.xhtml#a6f13dc0738b4cc6b51ed1e35fe616bd0">arm_compute::exp_tab_qs8</a></div><div class="ttdeci">const std::array< qint8x8_t, 4 > exp_tab_qs8</div><div class="ttdoc">< Exponent polynomial coefficients for 8 bit fixed point (8 elements) Format is in Q0...</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00029">NEFixedPoint.inl:29</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="aa754195778af2be8fd3c48192eb1e5b6"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> arm_compute::vqtaylor_polyq_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00735">735</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+
+<p>References <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa7fc56270e7a70fa81a5935b72eacbe29">A</a>, <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571">B</a>, and <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00328">vqmulq_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00736"></a><span class="lineno"> 736</span> {</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> shift_value = vdupq_n_s8(-(7 - fixed_point_position));</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> const_one = vdupq_n_s8(1);</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa7fc56270e7a70fa81a5935b72eacbe29">A</a> = vqrshlq_s8(islog ? <a class="code" href="namespacearm__compute.xhtml#a44e335b1163d294dcd6efc8e51565135">log_tabq_qs8</a>[0] : <a class="code" href="namespacearm__compute.xhtml#a8b29cd747029a70119b7a21b72f56e12">exp_tabq_qs8</a>[0], islog ? vqaddq_s8(shift_value, const_one) : shift_value);</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571">B</a> = vqrshlq_s8(islog ? <a class="code" href="namespacearm__compute.xhtml#a44e335b1163d294dcd6efc8e51565135">log_tabq_qs8</a>[1] : exp_tabq_qs8[1], shift_value);</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> C = vqrshlq_s8(islog ? <a class="code" href="namespacearm__compute.xhtml#a44e335b1163d294dcd6efc8e51565135">log_tabq_qs8</a>[2] : exp_tabq_qs8[2], shift_value);</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> D = vqrshlq_s8(islog ? <a class="code" href="namespacearm__compute.xhtml#a44e335b1163d294dcd6efc8e51565135">log_tabq_qs8</a>[3] : exp_tabq_qs8[3], shift_value);</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> x1 = vqaddq_s8(<a class="code" href="namespacearm__compute.xhtml#a081c0605c83155125ad95a144a1d6071">vqmulq_qs8</a>(a, D, fixed_point_position), C);</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> x2 = vqaddq_s8(<a class="code" href="namespacearm__compute.xhtml#a081c0605c83155125ad95a144a1d6071">vqmulq_qs8</a>(a, x1, fixed_point_position), B);</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> x3 = vqaddq_s8(<a class="code" href="namespacearm__compute.xhtml#a081c0605c83155125ad95a144a1d6071">vqmulq_qs8</a>(a, x2, fixed_point_position), A);</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> res = <a class="code" href="namespacearm__compute.xhtml#a081c0605c83155125ad95a144a1d6071">vqmulq_qs8</a>(a, x3, fixed_point_position);</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  <span class="keywordflow">return</span> res;</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a1ce9b523fd4f3b5bbcadcd796183455aa7fc56270e7a70fa81a5935b72eacbe29"><div class="ttname"><a href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa7fc56270e7a70fa81a5935b72eacbe29">arm_compute::Channel::A</a></div><div class="ttdoc">Alpha channel. </div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571"><div class="ttname"><a href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571">arm_compute::Channel::B</a></div><div class="ttdoc">Blue channel. </div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a5b99ed49abd6b7bf13dafdd17bcef855"><div class="ttname"><a href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">arm_compute::qint8x16_t</a></div><div class="ttdeci">int8x16_t qint8x16_t</div><div class="ttdoc">8 bit fixed point vector with 16 elements </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8h_source.xhtml#l00037">NEFixedPoint.h:37</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a8b29cd747029a70119b7a21b72f56e12"><div class="ttname"><a href="namespacearm__compute.xhtml#a8b29cd747029a70119b7a21b72f56e12">arm_compute::exp_tabq_qs8</a></div><div class="ttdeci">const std::array< qint8x16_t, 4 > exp_tabq_qs8</div><div class="ttdoc">Logarithm polynomial coefficients for 8 bit fixed point (8 elements) Format is in Q0...</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00041">NEFixedPoint.inl:41</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a081c0605c83155125ad95a144a1d6071"><div class="ttname"><a href="namespacearm__compute.xhtml#a081c0605c83155125ad95a144a1d6071">arm_compute::vqmulq_qs8</a></div><div class="ttdeci">qint8x16_t vqmulq_qs8(qint8x16_t a, qint8x16_t b, int fixed_point_position)</div><div class="ttdoc">8 bit fixed point vector saturating multiply (16 elements) </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00328">NEFixedPoint.inl:328</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a44e335b1163d294dcd6efc8e51565135"><div class="ttname"><a href="namespacearm__compute.xhtml#a44e335b1163d294dcd6efc8e51565135">arm_compute::log_tabq_qs8</a></div><div class="ttdeci">const std::array< qint8x16_t, 4 > log_tabq_qs8</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00065">NEFixedPoint.inl:65</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="aa24b270b0193ad8983dfecd6105c4936"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> vrecip_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Calculate reciprocal of a fixed point 8bit number using the Newton-Raphson method. </p>
+<p>(8 elements)</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>8bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8bit reciprocal (1/a). </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00602">602</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+
+<p>References <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00274">vmul_qs8()</a>.</p>
+
+<p>Referenced by <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00676">vdiv_qs8()</a>, <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00802">vlog_qs8()</a>, and <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00988">vtanh_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00603"></a><span class="lineno"> 603</span> {</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  <span class="comment">// We need two bits to store 2, thus we can only support formats from Q2.5 to Q7.0</span></div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> const_48_over_17 = vdup_n_s8(0x7A >> (5 - fixed_point_position)); <span class="comment">// 2.823</span></div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> const_minus_32_over_17 = vdup_n_s8(-(0x3C >> (5 - fixed_point_position))); <span class="comment">// -1.8823</span></div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> const_one = vdup_n_s8(1 << fixed_point_position);</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span> </div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <span class="comment">// Find shift value</span></div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> shift_value = vneg_s8(vsub_s8(vdup_n_s8(8), vadd_s8(vclz_s8(a), vdup_n_s8(fixed_point_position))));</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> temp = vshl_s8(a, shift_value);</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span> </div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> x = vadd_s8(const_48_over_17, <a class="code" href="namespacearm__compute.xhtml#afccf1305c480f2338af8925bba6b54cd">vmul_qs8</a>(temp, const_minus_32_over_17, fixed_point_position));</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span> </div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  uint8x8_t set_one = vcgt_s8(x, const_one);</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  x = vbsl_s8(set_one, const_one, x);</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span> </div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <span class="comment">// Use three iterations of Newton-Raphson method to get the result</span></div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  x = vadd_s8(x, <a class="code" href="namespacearm__compute.xhtml#afccf1305c480f2338af8925bba6b54cd">vmul_qs8</a>(x, vsub_s8(const_one, <a class="code" href="namespacearm__compute.xhtml#afccf1305c480f2338af8925bba6b54cd">vmul_qs8</a>(temp, x, fixed_point_position)), fixed_point_position));</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  x = vadd_s8(x, <a class="code" href="namespacearm__compute.xhtml#afccf1305c480f2338af8925bba6b54cd">vmul_qs8</a>(x, vsub_s8(const_one, <a class="code" href="namespacearm__compute.xhtml#afccf1305c480f2338af8925bba6b54cd">vmul_qs8</a>(temp, x, fixed_point_position)), fixed_point_position));</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  x = vadd_s8(x, <a class="code" href="namespacearm__compute.xhtml#afccf1305c480f2338af8925bba6b54cd">vmul_qs8</a>(x, vsub_s8(const_one, <a class="code" href="namespacearm__compute.xhtml#afccf1305c480f2338af8925bba6b54cd">vmul_qs8</a>(temp, x, fixed_point_position)), fixed_point_position));</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span> </div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  <span class="keywordflow">return</span> vshl_s8(x, shift_value);</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_afccf1305c480f2338af8925bba6b54cd"><div class="ttname"><a href="namespacearm__compute.xhtml#afccf1305c480f2338af8925bba6b54cd">arm_compute::vmul_qs8</a></div><div class="ttdeci">qint8x8_t vmul_qs8(qint8x8_t a, qint8x8_t b, int fixed_point_position)</div><div class="ttdoc">8 bit fixed point vector multiply (8 elements) </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00274">NEFixedPoint.inl:274</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a16a1bee14f1db073f75caa76dacf5078"><div class="ttname"><a href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">arm_compute::qint8x8_t</a></div><div class="ttdeci">int8x8_t qint8x8_t</div><div class="ttdoc">8 bit fixed point vector with 8 elements </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8h_source.xhtml#l00033">NEFixedPoint.h:33</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="abbeb1dc4834fb4e97cf94d702d0e0f91"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> vrecipq_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Calculate reciprocal of a fixed point 8bit number using the Newton-Raphson method. </p>
+<p>(16 elements)</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>8bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8bit reciprocal (1/a). </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00626">626</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+
+<p>References <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00291">vmulq_qs8()</a>, and <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00259">vsubq_qs8()</a>.</p>
+
+<p>Referenced by <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00681">vdivq_qs8()</a>, and <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00841">vlogq_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00627"></a><span class="lineno"> 627</span> {</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  <span class="comment">// We need two bits to store 2, thus we can only support formats from Q2.5 to Q7.0</span></div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> const_48_over_17 = vdupq_n_s8(0x7A >> (5 - fixed_point_position)); <span class="comment">// 2.823</span></div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> const_minus_32_over_17 = vdupq_n_s8((0x3C >> (5 - fixed_point_position))); <span class="comment">// -1.8823</span></div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> const_one = vdupq_n_s8(1 << fixed_point_position);</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span> </div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  <span class="comment">// Find shift value</span></div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> shift_value = vnegq_s8(vsubq_s8(vdupq_n_s8(8), vaddq_s8(vclzq_s8(a), vdupq_n_s8(fixed_point_position))));</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> temp = vshlq_s8(a, shift_value);</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span> </div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> x = <a class="code" href="namespacearm__compute.xhtml#a1adda6690cbca8a996255e311e4762d4">vsubq_qs8</a>(const_48_over_17, <a class="code" href="namespacearm__compute.xhtml#a031b17d4102856aa4d6bf7ebf83bf0ab">vmulq_qs8</a>(temp, const_minus_32_over_17, fixed_point_position));</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span> </div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  <span class="comment">// Set initial guess to one if x > 1</span></div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  uint8x16_t set_one = vcgtq_s8(x, const_one);</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  x = vbslq_s8(set_one, const_one, x);</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span> </div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  <span class="comment">// Use three iterations of Newton-Raphson method to get the result</span></div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  x = vaddq_s8(x, <a class="code" href="namespacearm__compute.xhtml#a031b17d4102856aa4d6bf7ebf83bf0ab">vmulq_qs8</a>(x, vsubq_s8(const_one, <a class="code" href="namespacearm__compute.xhtml#a031b17d4102856aa4d6bf7ebf83bf0ab">vmulq_qs8</a>(temp, x, fixed_point_position)), fixed_point_position));</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  x = vaddq_s8(x, <a class="code" href="namespacearm__compute.xhtml#a031b17d4102856aa4d6bf7ebf83bf0ab">vmulq_qs8</a>(x, vsubq_s8(const_one, <a class="code" href="namespacearm__compute.xhtml#a031b17d4102856aa4d6bf7ebf83bf0ab">vmulq_qs8</a>(temp, x, fixed_point_position)), fixed_point_position));</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  x = vaddq_s8(x, <a class="code" href="namespacearm__compute.xhtml#a031b17d4102856aa4d6bf7ebf83bf0ab">vmulq_qs8</a>(x, vsubq_s8(const_one, <a class="code" href="namespacearm__compute.xhtml#a031b17d4102856aa4d6bf7ebf83bf0ab">vmulq_qs8</a>(temp, x, fixed_point_position)), fixed_point_position));</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span> </div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  <span class="keywordflow">return</span> vshlq_s8(x, shift_value);</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a5b99ed49abd6b7bf13dafdd17bcef855"><div class="ttname"><a href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">arm_compute::qint8x16_t</a></div><div class="ttdeci">int8x16_t qint8x16_t</div><div class="ttdoc">8 bit fixed point vector with 16 elements </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8h_source.xhtml#l00037">NEFixedPoint.h:37</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a031b17d4102856aa4d6bf7ebf83bf0ab"><div class="ttname"><a href="namespacearm__compute.xhtml#a031b17d4102856aa4d6bf7ebf83bf0ab">arm_compute::vmulq_qs8</a></div><div class="ttdeci">qint8x16_t vmulq_qs8(qint8x16_t a, qint8x16_t b, int fixed_point_position)</div><div class="ttdoc">8 bit fixed point vector multiply (16 elements) </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00291">NEFixedPoint.inl:291</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a1adda6690cbca8a996255e311e4762d4"><div class="ttname"><a href="namespacearm__compute.xhtml#a1adda6690cbca8a996255e311e4762d4">arm_compute::vsubq_qs8</a></div><div class="ttdeci">qint8x16_t vsubq_qs8(qint8x16_t a, qint8x16_t b)</div><div class="ttdoc">8 bit fixed point vector subtraction (16 elements) </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00259">NEFixedPoint.inl:259</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a1d54a1ef0078902b2334d2fddba74ca6"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void vst1_qs16 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> * </td>
+ <td class="paramname"><em>addr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a82c56f0856f56d430393e6a00baee983">qint16x4_t</a> </td>
+ <td class="paramname"><em>b</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Store a single 16 bit fixed point vector to memory (4 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">addr</td><td>Memory address where the 16 bit fixed point vector should be stored </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>16 bit fixed point vector to store </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00125">125</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  vst1_s16(addr, b);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a509f3f9d910651d71d9f7dc3b5b3b92a"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void vst1_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> * </td>
+ <td class="paramname"><em>addr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>b</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Store a single 8 bit fixed point vector to memory (8 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">addr</td><td>Memory address where the 8 bit fixed point vector should be stored </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>8 bit fixed point vector to store </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00115">115</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  vst1_s8(addr, b);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a8bb5f297efd64b941f5022ea3cd7ee9a"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void vst1q_qs16 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a1521eea74b97de8f2df9304e44179400">qint16_t</a> * </td>
+ <td class="paramname"><em>addr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a4e15143176bfacdde8b06f4bb0b67427">qint16x8_t</a> </td>
+ <td class="paramname"><em>b</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Store a single 8 bit fixed point vector to memory (16 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">addr</td><td>Memory address where the 16 bit fixed point vector should be stored </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>16 bit fixed point vector to store </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00130">130</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  vst1q_s16(addr, b);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="acf4cb0bc89b25c5fac96935d040207f6"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void vst1q_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a4c3f681c30c9398c45bc3cd5dc4f038a">qint8_t</a> * </td>
+ <td class="paramname"><em>addr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>b</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Store a single 8 bit fixed point vector to memory (16 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">addr</td><td>Memory address where the 8 bit fixed point vector should be stored </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>8 bit fixed point vector to store </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00120">120</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  vst1q_s8(addr, b);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a90c8ce2712bdb44fd58e3fa8b78bf6fb"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> vsub_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>b</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point vector subtraction (8 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 8 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 8 bit fixed point input vector</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point vector subtraction </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00254">254</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+<div class="fragment"><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="keywordflow">return</span> vsub_s8(a, b);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a1adda6690cbca8a996255e311e4762d4"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> vsubq_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>b</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>8 bit fixed point vector subtraction (16 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>First 8 bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Second 8 bit fixed point input vector</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8 bit fixed point vector subtraction </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00259">259</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+
+<p>Referenced by <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00626">vrecipq_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> {</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">return</span> vsubq_s8(a, b);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> }</div></div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a490b00ba8696c15a0d8267cb73fa359b"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> vtanh_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Calculate hyperbolic tangent for fixed point 8bit (8 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>8bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The calculated Hyperbolic Tangent. </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00988">988</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+
+<p>References <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00930">arm_compute::test::fixed_point_arithmetic::detail::tanh()</a>, <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00229">vqadd_qs8()</a>, <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00750">vqexp_qs8()</a>, <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00311">vqmul_qs8()</a>, <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00264">vqsub_qs8()</a>, and <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00602">vrecip_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00989"></a><span class="lineno"> 989</span> {</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> const_one = vdup_n_s8(1 << fixed_point_position);</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> const_two = vdup_n_s8(2 << fixed_point_position);</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span> </div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> exp2x = <a class="code" href="namespacearm__compute.xhtml#a635b41196d74b1f2c4d9ee9298444796">vqexp_qs8</a>(<a class="code" href="namespacearm__compute.xhtml#a746205173d1a1f3955fa0c26b5be3b10">vqmul_qs8</a>(const_two, a, fixed_point_position), fixed_point_position);</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> num = <a class="code" href="namespacearm__compute.xhtml#a5b1437029acce06690a938e09f5a762a">vqsub_qs8</a>(exp2x, const_one);</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> den = <a class="code" href="namespacearm__compute.xhtml#a8a14fe5fc71105c9bfebb28a58f06a52">vqadd_qs8</a>(exp2x, const_one);</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>  <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#a6854479935f66029852441b051e1a3e0">tanh</a> = <a class="code" href="namespacearm__compute.xhtml#a746205173d1a1f3955fa0c26b5be3b10">vqmul_qs8</a>(num, <a class="code" href="namespacearm__compute.xhtml#aa24b270b0193ad8983dfecd6105c4936">vrecip_qs8</a>(den, fixed_point_position), fixed_point_position);</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span> </div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>  <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#a6854479935f66029852441b051e1a3e0">tanh</a>;</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a5b1437029acce06690a938e09f5a762a"><div class="ttname"><a href="namespacearm__compute.xhtml#a5b1437029acce06690a938e09f5a762a">arm_compute::vqsub_qs8</a></div><div class="ttdeci">qint8x8_t vqsub_qs8(qint8x8_t a, qint8x8_t b)</div><div class="ttdoc">8 bit fixed point vector saturating subtraction (8 elements) </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00264">NEFixedPoint.inl:264</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a746205173d1a1f3955fa0c26b5be3b10"><div class="ttname"><a href="namespacearm__compute.xhtml#a746205173d1a1f3955fa0c26b5be3b10">arm_compute::vqmul_qs8</a></div><div class="ttdeci">qint8x8_t vqmul_qs8(qint8x8_t a, qint8x8_t b, int fixed_point_position)</div><div class="ttdoc">8 bit fixed point vector saturating multiply (8 elements) </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00311">NEFixedPoint.inl:311</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_aa24b270b0193ad8983dfecd6105c4936"><div class="ttname"><a href="namespacearm__compute.xhtml#aa24b270b0193ad8983dfecd6105c4936">arm_compute::vrecip_qs8</a></div><div class="ttdeci">qint8x8_t vrecip_qs8(qint8x8_t a, int fixed_point_position)</div><div class="ttdoc">Calculate reciprocal of a fixed point 8bit number using the Newton-Raphson method. </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00602">NEFixedPoint.inl:602</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a16a1bee14f1db073f75caa76dacf5078"><div class="ttname"><a href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">arm_compute::qint8x8_t</a></div><div class="ttdeci">int8x8_t qint8x8_t</div><div class="ttdoc">8 bit fixed point vector with 8 elements </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8h_source.xhtml#l00033">NEFixedPoint.h:33</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a8a14fe5fc71105c9bfebb28a58f06a52"><div class="ttname"><a href="namespacearm__compute.xhtml#a8a14fe5fc71105c9bfebb28a58f06a52">arm_compute::vqadd_qs8</a></div><div class="ttdeci">qint8x8_t vqadd_qs8(qint8x8_t a, qint8x8_t b)</div><div class="ttdoc">8 bit fixed point vector saturating add (8 elements) </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00229">NEFixedPoint.inl:229</a></div></div>
+<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_a6854479935f66029852441b051e1a3e0"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#a6854479935f66029852441b051e1a3e0">arm_compute::test::fixed_point_arithmetic::detail::tanh</a></div><div class="ttdeci">fixed_point< T > tanh(fixed_point< T > x)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00930">FixedPoint.h:930</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a635b41196d74b1f2c4d9ee9298444796"><div class="ttname"><a href="namespacearm__compute.xhtml#a635b41196d74b1f2c4d9ee9298444796">arm_compute::vqexp_qs8</a></div><div class="ttdeci">qint8x8_t vqexp_qs8(qint8x8_t a, int fixed_point_position)</div><div class="ttdoc">Calculate saturating exponential fixed point 8bit (8 elements) </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00750">NEFixedPoint.inl:750</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a7845701adefdb1adafc98ca3c4918c2e"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">float32x4_t vtanhq_f32 </td>
+ <td>(</td>
+ <td class="paramtype">float32x4_t </td>
<td class="paramname"><em>val</em></td><td>)</td>
<td></td>
</tr>
@@ -7467,21 +15086,22 @@
<dl class="section note"><dt>Note</dt><dd>We clamp x to [-5,5] to avoid overflowing issues.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramname">val</td><td>Input vector value in F32 format.</td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">val</td><td>Input vector value in F32 format.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The calculated Hyperbolic Tangent. </dd></dl>
-<p>Definition at line <a class="el" href="_n_e_math_8h_source.xhtml#l00167">167</a> of file <a class="el" href="_n_e_math_8h_source.xhtml">NEMath.h</a>.</p>
+<p>Definition at line <a class="el" href="_n_e_math_8inl_source.xhtml#l00122">122</a> of file <a class="el" href="_n_e_math_8inl_source.xhtml">NEMath.inl</a>.</p>
-<p>References <a class="el" href="_n_e_math_8h_source.xhtml#l00115">vexpq_f32()</a>, and <a class="el" href="_n_e_math_8h_source.xhtml#l00082">vinvq_f32()</a>.</p>
-<div class="fragment"><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keyword">static</span> <span class="keyword">const</span> float32x4_t CONST_1 = vdupq_n_f32(1.f); <span class="comment">// 1.f</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keyword">static</span> <span class="keyword">const</span> float32x4_t CONST_2 = vdupq_n_f32(2.f); <span class="comment">// 2.f</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keyword">static</span> <span class="keyword">const</span> float32x4_t CONST_MIN_TANH = vdupq_n_f32(-5.f); <span class="comment">// -5.f</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keyword">static</span> <span class="keyword">const</span> float32x4_t CONST_MAX_TANH = vdupq_n_f32(5.f); <span class="comment">// 5.f</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  float32x4_t x = vminq_f32(vmaxq_f32(val, CONST_MIN_TANH), CONST_MAX_TANH);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  float32x4_t exp2x = <a class="code" href="namespacearm__compute.xhtml#aa197f574e5effe492aa8034651467eb3">vexpq_f32</a>(vmulq_f32(CONST_2, x));</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  float32x4_t num = vsubq_f32(exp2x, CONST_1);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  float32x4_t den = vaddq_f32(exp2x, CONST_1);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  float32x4_t tanh = vmulq_f32(num, <a class="code" href="namespacearm__compute.xhtml#ae1cdb8bbcb3f7ce5d3469f42f19d37a6">vinvq_f32</a>(den));</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">return</span> tanh;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_ae1cdb8bbcb3f7ce5d3469f42f19d37a6"><div class="ttname"><a href="namespacearm__compute.xhtml#ae1cdb8bbcb3f7ce5d3469f42f19d37a6">arm_compute::vinvq_f32</a></div><div class="ttdeci">float32x4_t vinvq_f32(const float32x4_t &x)</div><div class="ttdoc">Calculate reciprocal. </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_math_8h_source.xhtml#l00082">NEMath.h:82</a></div></div>
-<div class="ttc" id="namespacearm__compute_xhtml_aa197f574e5effe492aa8034651467eb3"><div class="ttname"><a href="namespacearm__compute.xhtml#aa197f574e5effe492aa8034651467eb3">arm_compute::vexpq_f32</a></div><div class="ttdeci">float32x4_t vexpq_f32(const float32x4_t &x)</div><div class="ttdoc">Calculate exponential. </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_math_8h_source.xhtml#l00115">NEMath.h:115</a></div></div>
+<p>References <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00930">arm_compute::test::fixed_point_arithmetic::detail::tanh()</a>, <a class="el" href="_n_e_math_8inl_source.xhtml#l00086">vexpq_f32()</a>, and <a class="el" href="_n_e_math_8inl_source.xhtml#l00066">vinvq_f32()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keyword">static</span> <span class="keyword">const</span> float32x4_t CONST_1 = vdupq_n_f32(1.f);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keyword">static</span> <span class="keyword">const</span> float32x4_t CONST_2 = vdupq_n_f32(2.f);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keyword">static</span> <span class="keyword">const</span> float32x4_t CONST_MIN_TANH = vdupq_n_f32(-10.f);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keyword">static</span> <span class="keyword">const</span> float32x4_t CONST_MAX_TANH = vdupq_n_f32(10.f);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  float32x4_t x = vminq_f32(vmaxq_f32(val, CONST_MIN_TANH), CONST_MAX_TANH);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  float32x4_t exp2x = <a class="code" href="namespacearm__compute.xhtml#ade3ef16de304661943c900ac9a47d28f">vexpq_f32</a>(vmulq_f32(CONST_2, x));</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  float32x4_t num = vsubq_f32(exp2x, CONST_1);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  float32x4_t den = vaddq_f32(exp2x, CONST_1);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  float32x4_t <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#a6854479935f66029852441b051e1a3e0">tanh</a> = vmulq_f32(num, <a class="code" href="namespacearm__compute.xhtml#ac8f459d5899b79c00fb4042a5b3470fb">vinvq_f32</a>(den));</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#a6854479935f66029852441b051e1a3e0">tanh</a>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_ade3ef16de304661943c900ac9a47d28f"><div class="ttname"><a href="namespacearm__compute.xhtml#ade3ef16de304661943c900ac9a47d28f">arm_compute::vexpq_f32</a></div><div class="ttdeci">float32x4_t vexpq_f32(float32x4_t x)</div><div class="ttdoc">Calculate exponential. </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_math_8inl_source.xhtml#l00086">NEMath.inl:86</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_ac8f459d5899b79c00fb4042a5b3470fb"><div class="ttname"><a href="namespacearm__compute.xhtml#ac8f459d5899b79c00fb4042a5b3470fb">arm_compute::vinvq_f32</a></div><div class="ttdeci">float32x4_t vinvq_f32(float32x4_t x)</div><div class="ttdoc">Calculate reciprocal. </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_math_8inl_source.xhtml#l00066">NEMath.inl:66</a></div></div>
+<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_a6854479935f66029852441b051e1a3e0"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#a6854479935f66029852441b051e1a3e0">arm_compute::test::fixed_point_arithmetic::detail::tanh</a></div><div class="ttdeci">fixed_point< T > tanh(fixed_point< T > x)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00930">FixedPoint.h:930</a></div></div>
</div><!-- fragment -->
</div>
</div>
-<a class="anchor" id="ac91f64208cebf2177a6be3a40ecebca8"></a>
+<a class="anchor" id="adba961ae41ea74a338dab569938e6312"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
@@ -7489,9 +15109,119 @@
<td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname">float32x4_t arm_compute::vtaylor_polyq_f32 </td>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> vtanhq_qs8 </td>
<td>(</td>
- <td class="paramtype">const float32x4_t & </td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Calculate hyperbolic tangent for fixed point 8bit (16 elements) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>8bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The calculated Hyperbolic Tangent. </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l01001">1001</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+
+<p>References <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00930">arm_compute::test::fixed_point_arithmetic::detail::tanh()</a>, <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00234">vqaddq_qs8()</a>, <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00776">vqexpq_qs8()</a>, <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00328">vqmulq_qs8()</a>, <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00651">vqrecipq_qs8()</a>, and <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00269">vqsubq_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span> {</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> const_one = vdupq_n_s8(1 << fixed_point_position);</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> const_two = vdupq_n_s8(2 << fixed_point_position);</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span> </div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> exp2x = <a class="code" href="namespacearm__compute.xhtml#ae6cf1822b8fbad305677650a2b751247">vqexpq_qs8</a>(<a class="code" href="namespacearm__compute.xhtml#a081c0605c83155125ad95a144a1d6071">vqmulq_qs8</a>(const_two, a, fixed_point_position), fixed_point_position);</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> num = <a class="code" href="namespacearm__compute.xhtml#ab2a6ce3d8239e49c81af1ebc617680b4">vqsubq_qs8</a>(exp2x, const_one);</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>  <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> den = <a class="code" href="namespacearm__compute.xhtml#a9765c5ee2d3cc9e3ca983fd2f47ba916">vqaddq_qs8</a>(exp2x, const_one);</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>  <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#a6854479935f66029852441b051e1a3e0">tanh</a> = <a class="code" href="namespacearm__compute.xhtml#a081c0605c83155125ad95a144a1d6071">vqmulq_qs8</a>(num, <a class="code" href="namespacearm__compute.xhtml#a3dd4382391c752128ab7b3a6dd68314b">vqrecipq_qs8</a>(den, fixed_point_position), fixed_point_position);</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span> </div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>  <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#a6854479935f66029852441b051e1a3e0">tanh</a>;</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a5b99ed49abd6b7bf13dafdd17bcef855"><div class="ttname"><a href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">arm_compute::qint8x16_t</a></div><div class="ttdeci">int8x16_t qint8x16_t</div><div class="ttdoc">8 bit fixed point vector with 16 elements </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8h_source.xhtml#l00037">NEFixedPoint.h:37</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a9765c5ee2d3cc9e3ca983fd2f47ba916"><div class="ttname"><a href="namespacearm__compute.xhtml#a9765c5ee2d3cc9e3ca983fd2f47ba916">arm_compute::vqaddq_qs8</a></div><div class="ttdeci">qint8x16_t vqaddq_qs8(qint8x16_t a, qint8x16_t b)</div><div class="ttdoc">8 bit fixed point vector saturating add (16 elements) </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00234">NEFixedPoint.inl:234</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_ae6cf1822b8fbad305677650a2b751247"><div class="ttname"><a href="namespacearm__compute.xhtml#ae6cf1822b8fbad305677650a2b751247">arm_compute::vqexpq_qs8</a></div><div class="ttdeci">qint8x16_t vqexpq_qs8(qint8x16_t a, int fixed_point_position)</div><div class="ttdoc">Calculate saturating exponential fixed point 8bit (16 elements) </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00776">NEFixedPoint.inl:776</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a081c0605c83155125ad95a144a1d6071"><div class="ttname"><a href="namespacearm__compute.xhtml#a081c0605c83155125ad95a144a1d6071">arm_compute::vqmulq_qs8</a></div><div class="ttdeci">qint8x16_t vqmulq_qs8(qint8x16_t a, qint8x16_t b, int fixed_point_position)</div><div class="ttdoc">8 bit fixed point vector saturating multiply (16 elements) </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00328">NEFixedPoint.inl:328</a></div></div>
+<div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_a6854479935f66029852441b051e1a3e0"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#a6854479935f66029852441b051e1a3e0">arm_compute::test::fixed_point_arithmetic::detail::tanh</a></div><div class="ttdeci">fixed_point< T > tanh(fixed_point< T > x)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00930">FixedPoint.h:930</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_ab2a6ce3d8239e49c81af1ebc617680b4"><div class="ttname"><a href="namespacearm__compute.xhtml#ab2a6ce3d8239e49c81af1ebc617680b4">arm_compute::vqsubq_qs8</a></div><div class="ttdeci">qint8x16_t vqsubq_qs8(qint8x16_t a, qint8x16_t b)</div><div class="ttdoc">8 bit fixed point vector saturating subtraction (16 elements) </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00269">NEFixedPoint.inl:269</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a3dd4382391c752128ab7b3a6dd68314b"><div class="ttname"><a href="namespacearm__compute.xhtml#a3dd4382391c752128ab7b3a6dd68314b">arm_compute::vqrecipq_qs8</a></div><div class="ttdeci">qint8x16_t vqrecipq_qs8(qint8x16_t a, int fixed_point_position)</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00651">NEFixedPoint.inl:651</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a91b74be928419cd95068ccc9c6f1cd83"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> vtaylor_poly_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Perform a 4th degree polynomial approximation. </p>
+<p>(8 elements)</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>8bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8bit taylor approximation. </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00687">687</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+
+<p>References <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa7fc56270e7a70fa81a5935b72eacbe29">A</a>, <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571">B</a>, and <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00274">vmul_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00688"></a><span class="lineno"> 688</span> {</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> shift_value = vdup_n_s8(-(7 - fixed_point_position));</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> const_one = vdup_n_s8(1);</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa7fc56270e7a70fa81a5935b72eacbe29">A</a> = vrshl_s8(islog ? <a class="code" href="namespacearm__compute.xhtml#af6bad6fafc33437f617e27d063aea07d">log_tab_qs8</a>[0] : <a class="code" href="namespacearm__compute.xhtml#a6f13dc0738b4cc6b51ed1e35fe616bd0">exp_tab_qs8</a>[0], islog ? vadd_s8(shift_value, const_one) : shift_value);</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571">B</a> = vrshl_s8(islog ? <a class="code" href="namespacearm__compute.xhtml#af6bad6fafc33437f617e27d063aea07d">log_tab_qs8</a>[1] : exp_tab_qs8[1], shift_value);</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> C = vrshl_s8(islog ? <a class="code" href="namespacearm__compute.xhtml#af6bad6fafc33437f617e27d063aea07d">log_tab_qs8</a>[2] : exp_tab_qs8[2], shift_value);</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> D = vrshl_s8(islog ? <a class="code" href="namespacearm__compute.xhtml#af6bad6fafc33437f617e27d063aea07d">log_tab_qs8</a>[3] : exp_tab_qs8[3], shift_value);</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> x1 = vadd_s8(<a class="code" href="namespacearm__compute.xhtml#afccf1305c480f2338af8925bba6b54cd">vmul_qs8</a>(a, D, fixed_point_position), C);</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> x2 = vadd_s8(<a class="code" href="namespacearm__compute.xhtml#afccf1305c480f2338af8925bba6b54cd">vmul_qs8</a>(a, x1, fixed_point_position), B);</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> x3 = vadd_s8(<a class="code" href="namespacearm__compute.xhtml#afccf1305c480f2338af8925bba6b54cd">vmul_qs8</a>(a, x2, fixed_point_position), A);</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a> res = <a class="code" href="namespacearm__compute.xhtml#afccf1305c480f2338af8925bba6b54cd">vmul_qs8</a>(a, x3, fixed_point_position);</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  <span class="keywordflow">return</span> res;</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a1ce9b523fd4f3b5bbcadcd796183455aa7fc56270e7a70fa81a5935b72eacbe29"><div class="ttname"><a href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa7fc56270e7a70fa81a5935b72eacbe29">arm_compute::Channel::A</a></div><div class="ttdoc">Alpha channel. </div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571"><div class="ttname"><a href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571">arm_compute::Channel::B</a></div><div class="ttdoc">Blue channel. </div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_afccf1305c480f2338af8925bba6b54cd"><div class="ttname"><a href="namespacearm__compute.xhtml#afccf1305c480f2338af8925bba6b54cd">arm_compute::vmul_qs8</a></div><div class="ttdeci">qint8x8_t vmul_qs8(qint8x8_t a, qint8x8_t b, int fixed_point_position)</div><div class="ttdoc">8 bit fixed point vector multiply (8 elements) </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00274">NEFixedPoint.inl:274</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_af6bad6fafc33437f617e27d063aea07d"><div class="ttname"><a href="namespacearm__compute.xhtml#af6bad6fafc33437f617e27d063aea07d">arm_compute::log_tab_qs8</a></div><div class="ttdeci">const std::array< qint8x8_t, 4 > log_tab_qs8</div><div class="ttdoc">Logarithm polynomial coefficients for 8 bit fixed point (16 elements) Format is in Q0...</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00053">NEFixedPoint.inl:53</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a16a1bee14f1db073f75caa76dacf5078"><div class="ttname"><a href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">arm_compute::qint8x8_t</a></div><div class="ttdeci">int8x8_t qint8x8_t</div><div class="ttdoc">8 bit fixed point vector with 8 elements </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8h_source.xhtml#l00033">NEFixedPoint.h:33</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a6f13dc0738b4cc6b51ed1e35fe616bd0"><div class="ttname"><a href="namespacearm__compute.xhtml#a6f13dc0738b4cc6b51ed1e35fe616bd0">arm_compute::exp_tab_qs8</a></div><div class="ttdeci">const std::array< qint8x8_t, 4 > exp_tab_qs8</div><div class="ttdoc">< Exponent polynomial coefficients for 8 bit fixed point (8 elements) Format is in Q0...</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00029">NEFixedPoint.inl:29</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a class="anchor" id="a4fa76a98dce5ed1b655ff840f2ce6e57"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">float32x4_t vtaylor_polyq_f32 </td>
+ <td>(</td>
+ <td class="paramtype">float32x4_t </td>
<td class="paramname"><em>x</em>, </td>
</tr>
<tr>
@@ -7516,23 +15246,78 @@
<p>Perform a 7th degree polynomial approximation using Estrin's method. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramname">x</td><td>Input vector value in F32 format. </td></tr>
- <tr><td class="paramname">coeffs</td><td>Polynomial coefficients table.</td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">x</td><td>Input vector value in F32 format. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">coeffs</td><td>Polynomial coefficients table.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The calculated approximation. </dd></dl>
-<p>Definition at line <a class="el" href="_n_e_math_8h_source.xhtml#l00097">97</a> of file <a class="el" href="_n_e_math_8h_source.xhtml">NEMath.h</a>.</p>
+<p>Definition at line <a class="el" href="_n_e_math_8inl_source.xhtml#l00074">74</a> of file <a class="el" href="_n_e_math_8inl_source.xhtml">NEMath.inl</a>.</p>
<p>References <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa7fc56270e7a70fa81a5935b72eacbe29">A</a>, and <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571">B</a>.</p>
-<p>Referenced by <a class="el" href="_n_e_math_8h_source.xhtml#l00115">vexpq_f32()</a>, and <a class="el" href="_n_e_math_8h_source.xhtml#l00139">vlogq_f32()</a>.</p>
-<div class="fragment"><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  float32x4_t <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa7fc56270e7a70fa81a5935b72eacbe29">A</a> = vmlaq_f32(coeffs[0], coeffs[4], x);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  float32x4_t <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571">B</a> = vmlaq_f32(coeffs[2], coeffs[6], x);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  float32x4_t C = vmlaq_f32(coeffs[1], coeffs[5], x);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  float32x4_t D = vmlaq_f32(coeffs[3], coeffs[7], x);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  float32x4_t x2 = vmulq_f32(x, x);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  float32x4_t x4 = vmulq_f32(x2, x2);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  float32x4_t res = vmlaq_f32(vmlaq_f32(A, B, x2), vmlaq_f32(C, D, x2), x4);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">return</span> res;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a1ce9b523fd4f3b5bbcadcd796183455aa7fc56270e7a70fa81a5935b72eacbe29"><div class="ttname"><a href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa7fc56270e7a70fa81a5935b72eacbe29">arm_compute::Channel::A</a></div><div class="ttdoc">Alpha channel. </div></div>
+<p>Referenced by <a class="el" href="_n_e_math_8inl_source.xhtml#l00086">vexpq_f32()</a>, and <a class="el" href="_n_e_math_8inl_source.xhtml#l00104">vlogq_f32()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  float32x4_t <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa7fc56270e7a70fa81a5935b72eacbe29">A</a> = vmlaq_f32(coeffs[0], coeffs[4], x);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  float32x4_t <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571">B</a> = vmlaq_f32(coeffs[2], coeffs[6], x);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  float32x4_t C = vmlaq_f32(coeffs[1], coeffs[5], x);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  float32x4_t D = vmlaq_f32(coeffs[3], coeffs[7], x);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  float32x4_t x2 = vmulq_f32(x, x);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  float32x4_t x4 = vmulq_f32(x2, x2);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  float32x4_t res = vmlaq_f32(vmlaq_f32(A, B, x2), vmlaq_f32(C, D, x2), x4);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">return</span> res;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a1ce9b523fd4f3b5bbcadcd796183455aa7fc56270e7a70fa81a5935b72eacbe29"><div class="ttname"><a href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa7fc56270e7a70fa81a5935b72eacbe29">arm_compute::Channel::A</a></div><div class="ttdoc">Alpha channel. </div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571"><div class="ttname"><a href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571">arm_compute::Channel::B</a></div><div class="ttdoc">Blue channel. </div></div>
</div><!-- fragment -->
</div>
</div>
+<a class="anchor" id="a9b9a80aab8862e344ef91591a0e6e199"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> vtaylor_polyq_qs8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> </td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>fixed_point_position</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Perform a 4th degree polynomial approximation. </p>
+<p>(16 elements)</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>8bit fixed point input vector </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fixed_point_position</td><td>Fixed point position that expresses the number of bits for the fractional part of the number</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The result of the 8bit taylor approximation. </dd></dl>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00719">719</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+
+<p>References <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa7fc56270e7a70fa81a5935b72eacbe29">A</a>, <a class="el" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571">B</a>, and <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00291">vmulq_qs8()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00720"></a><span class="lineno"> 720</span> {</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> shift_value = vdupq_n_s8(-(7 - fixed_point_position));</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> const_one = vdupq_n_s8(1);</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa7fc56270e7a70fa81a5935b72eacbe29">A</a> = vrshlq_s8(islog ? <a class="code" href="namespacearm__compute.xhtml#a44e335b1163d294dcd6efc8e51565135">log_tabq_qs8</a>[0] : <a class="code" href="namespacearm__compute.xhtml#a8b29cd747029a70119b7a21b72f56e12">exp_tabq_qs8</a>[0], islog ? vaddq_s8(shift_value, const_one) : shift_value);</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> <a class="code" href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571">B</a> = vrshlq_s8(islog ? <a class="code" href="namespacearm__compute.xhtml#a44e335b1163d294dcd6efc8e51565135">log_tabq_qs8</a>[1] : exp_tabq_qs8[1], shift_value);</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> C = vrshlq_s8(islog ? <a class="code" href="namespacearm__compute.xhtml#a44e335b1163d294dcd6efc8e51565135">log_tabq_qs8</a>[2] : exp_tabq_qs8[2], shift_value);</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> D = vrshlq_s8(islog ? <a class="code" href="namespacearm__compute.xhtml#a44e335b1163d294dcd6efc8e51565135">log_tabq_qs8</a>[3] : exp_tabq_qs8[3], shift_value);</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> x1 = vaddq_s8(<a class="code" href="namespacearm__compute.xhtml#a031b17d4102856aa4d6bf7ebf83bf0ab">vmulq_qs8</a>(a, D, fixed_point_position), C);</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> x2 = vaddq_s8(<a class="code" href="namespacearm__compute.xhtml#a031b17d4102856aa4d6bf7ebf83bf0ab">vmulq_qs8</a>(a, x1, fixed_point_position), B);</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> x3 = vaddq_s8(<a class="code" href="namespacearm__compute.xhtml#a031b17d4102856aa4d6bf7ebf83bf0ab">vmulq_qs8</a>(a, x2, fixed_point_position), A);</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  <span class="keyword">const</span> <a class="code" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a> res = <a class="code" href="namespacearm__compute.xhtml#a031b17d4102856aa4d6bf7ebf83bf0ab">vmulq_qs8</a>(a, x3, fixed_point_position);</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  <span class="keywordflow">return</span> res;</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span> }</div><div class="ttc" id="namespacearm__compute_xhtml_a1ce9b523fd4f3b5bbcadcd796183455aa7fc56270e7a70fa81a5935b72eacbe29"><div class="ttname"><a href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa7fc56270e7a70fa81a5935b72eacbe29">arm_compute::Channel::A</a></div><div class="ttdoc">Alpha channel. </div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571"><div class="ttname"><a href="namespacearm__compute.xhtml#a1ce9b523fd4f3b5bbcadcd796183455aa9d5ed678fe57bcca610140957afab571">arm_compute::Channel::B</a></div><div class="ttdoc">Blue channel. </div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a5b99ed49abd6b7bf13dafdd17bcef855"><div class="ttname"><a href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">arm_compute::qint8x16_t</a></div><div class="ttdeci">int8x16_t qint8x16_t</div><div class="ttdoc">8 bit fixed point vector with 16 elements </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8h_source.xhtml#l00037">NEFixedPoint.h:37</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a031b17d4102856aa4d6bf7ebf83bf0ab"><div class="ttname"><a href="namespacearm__compute.xhtml#a031b17d4102856aa4d6bf7ebf83bf0ab">arm_compute::vmulq_qs8</a></div><div class="ttdeci">qint8x16_t vmulq_qs8(qint8x16_t a, qint8x16_t b, int fixed_point_position)</div><div class="ttdoc">8 bit fixed point vector multiply (16 elements) </div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00291">NEFixedPoint.inl:291</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a8b29cd747029a70119b7a21b72f56e12"><div class="ttname"><a href="namespacearm__compute.xhtml#a8b29cd747029a70119b7a21b72f56e12">arm_compute::exp_tabq_qs8</a></div><div class="ttdeci">const std::array< qint8x16_t, 4 > exp_tabq_qs8</div><div class="ttdoc">Logarithm polynomial coefficients for 8 bit fixed point (8 elements) Format is in Q0...</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00041">NEFixedPoint.inl:41</a></div></div>
+<div class="ttc" id="namespacearm__compute_xhtml_a44e335b1163d294dcd6efc8e51565135"><div class="ttname"><a href="namespacearm__compute.xhtml#a44e335b1163d294dcd6efc8e51565135">arm_compute::log_tabq_qs8</a></div><div class="ttdeci">const std::array< qint8x16_t, 4 > log_tabq_qs8</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_fixed_point_8inl_source.xhtml#l00065">NEFixedPoint.inl:65</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
<h2 class="groupheader">Variable Documentation</h2>
<a class="anchor" id="a3fed059965fe44cbe7ed4091d6b63acf"></a>
<div class="memitem">
@@ -7546,7 +15331,7 @@
<p>Constant value of the border pixels when using <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327a8d6b5cada83510220f59e00ce86d4d92" title="Pixels outside the image are assumed to have a constant value. ">BorderMode::CONSTANT</a>. </p>
-<p>Definition at line <a class="el" href="_types_8h_source.xhtml#l00078">78</a> of file <a class="el" href="_types_8h_source.xhtml">Types.h</a>.</p>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00080">80</a> of file <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml">Types.h</a>.</p>
</div>
</div>
@@ -7560,7 +15345,40 @@
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">=</div><div class="line">{</div><div class="line"> {</div><div class="line"> vdupq_n_f32(1.f),</div><div class="line"> vdupq_n_f32(0.0416598916054f),</div><div class="line"> vdupq_n_f32(0.500000596046f),</div><div class="line"> vdupq_n_f32(0.0014122662833f),</div><div class="line"> vdupq_n_f32(1.00000011921f),</div><div class="line"> vdupq_n_f32(0.00833693705499f),</div><div class="line"> vdupq_n_f32(0.166665703058f),</div><div class="line"> vdupq_n_f32(0.000195780929062f),</div><div class="line"> }</div><div class="line">}</div></div><!-- fragment -->
-<p>Definition at line <a class="el" href="_n_e_math_8h_source.xhtml#l00032">32</a> of file <a class="el" href="_n_e_math_8h_source.xhtml">NEMath.h</a>.</p>
+<p>Definition at line <a class="el" href="_n_e_math_8inl_source.xhtml#l00028">28</a> of file <a class="el" href="_n_e_math_8inl_source.xhtml">NEMath.inl</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6f13dc0738b4cc6b51ed1e35fe616bd0"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const std::array<<a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a>, 4> exp_tab_qs8</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<b>Initial value:</b><div class="fragment"><div class="line">=</div><div class="line">{</div><div class="line"> {</div><div class="line"> vdup_n_s8(0x7F), </div><div class="line"> vdup_n_s8(0x3F), </div><div class="line"> vdup_n_s8(0x16), </div><div class="line"> vdup_n_s8(0x05), </div><div class="line"> }</div><div class="line">}</div></div><!-- fragment -->
+<p>< Exponent polynomial coefficients for 8 bit fixed point (8 elements) Format is in Q0.7 for all elements </p>
+<p>Exponent polynomial coefficients for 8 bit fixed point (16 elements) Format is in Q0.7 for all elements </p>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00029">29</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8b29cd747029a70119b7a21b72f56e12"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const std::array<<a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a>, 4> exp_tabq_qs8</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<b>Initial value:</b><div class="fragment"><div class="line">=</div><div class="line">{</div><div class="line"> {</div><div class="line"> vdupq_n_s8(0x7F), </div><div class="line"> vdupq_n_s8(0x3F), </div><div class="line"> vdupq_n_s8(0x16), </div><div class="line"> vdupq_n_s8(0x05), </div><div class="line"> }</div><div class="line">}</div></div><!-- fragment -->
+<p>Logarithm polynomial coefficients for 8 bit fixed point (8 elements) Format is in Q0.7 for all elements except the first one which is in Q1.6. </p>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00041">41</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
</div>
</div>
@@ -7574,7 +15392,37 @@
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">=</div><div class="line">{</div><div class="line"> {</div><div class="line"> vdupq_n_f32(-2.29561495781f),</div><div class="line"> vdupq_n_f32(-2.47071170807f),</div><div class="line"> vdupq_n_f32(-5.68692588806f),</div><div class="line"> vdupq_n_f32(-0.165253549814f),</div><div class="line"> vdupq_n_f32(5.17591238022f),</div><div class="line"> vdupq_n_f32(0.844007015228f),</div><div class="line"> vdupq_n_f32(4.58445882797f),</div><div class="line"> vdupq_n_f32(0.0141278216615f),</div><div class="line"> }</div><div class="line">}</div></div><!-- fragment -->
-<p>Definition at line <a class="el" href="_n_e_math_8h_source.xhtml#l00047">47</a> of file <a class="el" href="_n_e_math_8h_source.xhtml">NEMath.h</a>.</p>
+<p>Definition at line <a class="el" href="_n_e_math_8inl_source.xhtml#l00043">43</a> of file <a class="el" href="_n_e_math_8inl_source.xhtml">NEMath.inl</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af6bad6fafc33437f617e27d063aea07d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const std::array<<a class="el" href="namespacearm__compute.xhtml#a16a1bee14f1db073f75caa76dacf5078">qint8x8_t</a>, 4> log_tab_qs8</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<b>Initial value:</b><div class="fragment"><div class="line">=</div><div class="line">{</div><div class="line"> {</div><div class="line"> vdup_n_s8(0x5C), </div><div class="line"> vdup_n_s8(-0x56), </div><div class="line"> vdup_n_s8(0x29), </div><div class="line"> vdup_n_s8(-0x0A), </div><div class="line"> }</div><div class="line">}</div></div><!-- fragment -->
+<p>Logarithm polynomial coefficients for 8 bit fixed point (16 elements) Format is in Q0.7 for all elements except the first one which is in Q1.6. </p>
+
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00053">53</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a44e335b1163d294dcd6efc8e51565135"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const std::array<<a class="el" href="namespacearm__compute.xhtml#a5b99ed49abd6b7bf13dafdd17bcef855">qint8x16_t</a>, 4> log_tabq_qs8</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<b>Initial value:</b><div class="fragment"><div class="line">=</div><div class="line">{</div><div class="line"> {</div><div class="line"> vdupq_n_s8(0x5C), </div><div class="line"> vdupq_n_s8(-0x56), </div><div class="line"> vdupq_n_s8(0x29), </div><div class="line"> vdupq_n_s8(-0x0A), </div><div class="line"> }</div><div class="line">}</div></div><!-- fragment -->
+<p>Definition at line <a class="el" href="_n_e_fixed_point_8inl_source.xhtml#l00065">65</a> of file <a class="el" href="_n_e_fixed_point_8inl_source.xhtml">NEFixedPoint.inl</a>.</p>
</div>
</div>
@@ -7602,7 +15450,7 @@
</table>
</div><div class="memdoc">
-<p>Definition at line <a class="el" href="_types_8h_source.xhtml#l00081">81</a> of file <a class="el" href="_types_8h_source.xhtml">Types.h</a>.</p>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00083">83</a> of file <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml">Types.h</a>.</p>
</div>
</div>
@@ -7616,7 +15464,7 @@
</table>
</div><div class="memdoc">
-<p>Definition at line <a class="el" href="_types_8h_source.xhtml#l00084">84</a> of file <a class="el" href="_types_8h_source.xhtml">Types.h</a>.</p>
+<p>Definition at line <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml#l00086">86</a> of file <a class="el" href="arm__compute_2core_2_types_8h_source.xhtml">Types.h</a>.</p>
</div>
</div>
@@ -7626,7 +15474,7 @@
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespacearm__compute.xhtml">arm_compute</a></li>
- <li class="footer">Generated on Wed May 3 2017 17:20:04 for ARM Compute Library by
+ <li class="footer">Generated on Fri Jun 23 2017 15:44:34 for Compute Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
</ul>