arm_compute v17.12
diff --git a/documentation/search/classes_3.js b/documentation/search/classes_3.js
index 7ee1f6a..01c7941 100644
--- a/documentation/search/classes_3.js
+++ b/documentation/search/classes_3.js
@@ -34,6 +34,7 @@
   ['clbox3x3',['CLBox3x3',['../classarm__compute_1_1_c_l_box3x3.xhtml',1,'arm_compute']]],
   ['clbox3x3kernel',['CLBox3x3Kernel',['../classarm__compute_1_1_c_l_box3x3_kernel.xhtml',1,'arm_compute']]],
   ['clbufferallocator',['CLBufferAllocator',['../classarm__compute_1_1_c_l_buffer_allocator.xhtml',1,'arm_compute']]],
+  ['clbuildoptions',['CLBuildOptions',['../classarm__compute_1_1_c_l_build_options.xhtml',1,'arm_compute']]],
   ['clcannyedge',['CLCannyEdge',['../classarm__compute_1_1_c_l_canny_edge.xhtml',1,'arm_compute']]],
   ['clchannelcombine',['CLChannelCombine',['../classarm__compute_1_1_c_l_channel_combine.xhtml',1,'arm_compute']]],
   ['clchannelcombinekernel',['CLChannelCombineKernel',['../classarm__compute_1_1_c_l_channel_combine_kernel.xhtml',1,'arm_compute']]],
@@ -51,13 +52,13 @@
   ['clconvolutionrectanglekernel',['CLConvolutionRectangleKernel',['../classarm__compute_1_1_c_l_convolution_rectangle_kernel.xhtml',1,'arm_compute']]],
   ['clconvolutionsquare',['CLConvolutionSquare',['../classarm__compute_1_1_c_l_convolution_square.xhtml',1,'arm_compute']]],
   ['clcopytoarraykernel',['CLCopyToArrayKernel',['../classarm__compute_1_1_c_l_copy_to_array_kernel.xhtml',1,'arm_compute']]],
-  ['cldepthconcatenate',['CLDepthConcatenate',['../classarm__compute_1_1_c_l_depth_concatenate.xhtml',1,'arm_compute']]],
-  ['cldepthconcatenatekernel',['CLDepthConcatenateKernel',['../classarm__compute_1_1_c_l_depth_concatenate_kernel.xhtml',1,'arm_compute']]],
-  ['cldepthconvert',['CLDepthConvert',['../classarm__compute_1_1_c_l_depth_convert.xhtml',1,'arm_compute']]],
-  ['cldepthconvertkernel',['CLDepthConvertKernel',['../classarm__compute_1_1_c_l_depth_convert_kernel.xhtml',1,'arm_compute']]],
-  ['cldepthwiseconvolution',['CLDepthwiseConvolution',['../classarm__compute_1_1_c_l_depthwise_convolution.xhtml',1,'arm_compute']]],
-  ['cldepthwiseconvolution3x3',['CLDepthwiseConvolution3x3',['../classarm__compute_1_1_c_l_depthwise_convolution3x3.xhtml',1,'arm_compute']]],
-  ['cldepthwiseconvolution3x3kernel',['CLDepthwiseConvolution3x3Kernel',['../classarm__compute_1_1_c_l_depthwise_convolution3x3_kernel.xhtml',1,'arm_compute']]],
+  ['cldepthconcatenatelayer',['CLDepthConcatenateLayer',['../classarm__compute_1_1_c_l_depth_concatenate_layer.xhtml',1,'arm_compute']]],
+  ['cldepthconcatenatelayerkernel',['CLDepthConcatenateLayerKernel',['../classarm__compute_1_1_c_l_depth_concatenate_layer_kernel.xhtml',1,'arm_compute']]],
+  ['cldepthconvertlayer',['CLDepthConvertLayer',['../classarm__compute_1_1_c_l_depth_convert_layer.xhtml',1,'arm_compute']]],
+  ['cldepthconvertlayerkernel',['CLDepthConvertLayerKernel',['../classarm__compute_1_1_c_l_depth_convert_layer_kernel.xhtml',1,'arm_compute']]],
+  ['cldepthwiseconvolutionlayer',['CLDepthwiseConvolutionLayer',['../classarm__compute_1_1_c_l_depthwise_convolution_layer.xhtml',1,'arm_compute']]],
+  ['cldepthwiseconvolutionlayer3x3',['CLDepthwiseConvolutionLayer3x3',['../classarm__compute_1_1_c_l_depthwise_convolution_layer3x3.xhtml',1,'arm_compute']]],
+  ['cldepthwiseconvolutionlayer3x3kernel',['CLDepthwiseConvolutionLayer3x3Kernel',['../classarm__compute_1_1_c_l_depthwise_convolution_layer3x3_kernel.xhtml',1,'arm_compute']]],
   ['cldepthwiseim2colkernel',['CLDepthwiseIm2ColKernel',['../classarm__compute_1_1_c_l_depthwise_im2_col_kernel.xhtml',1,'arm_compute']]],
   ['cldepthwiseseparableconvolutionlayer',['CLDepthwiseSeparableConvolutionLayer',['../classarm__compute_1_1_c_l_depthwise_separable_convolution_layer.xhtml',1,'arm_compute']]],
   ['cldepthwisevectortotensorkernel',['CLDepthwiseVectorToTensorKernel',['../classarm__compute_1_1_c_l_depthwise_vector_to_tensor_kernel.xhtml',1,'arm_compute']]],
@@ -98,8 +99,15 @@
   ['clgemm',['CLGEMM',['../classarm__compute_1_1_c_l_g_e_m_m.xhtml',1,'arm_compute']]],
   ['clgemminterleave4x4',['CLGEMMInterleave4x4',['../classarm__compute_1_1_c_l_g_e_m_m_interleave4x4.xhtml',1,'arm_compute']]],
   ['clgemminterleave4x4kernel',['CLGEMMInterleave4x4Kernel',['../classarm__compute_1_1_c_l_g_e_m_m_interleave4x4_kernel.xhtml',1,'arm_compute']]],
-  ['clgemmlowp',['CLGEMMLowp',['../classarm__compute_1_1_c_l_g_e_m_m_lowp.xhtml',1,'arm_compute']]],
+  ['clgemmlowpmatrixareductionkernel',['CLGEMMLowpMatrixAReductionKernel',['../classarm__compute_1_1_c_l_g_e_m_m_lowp_matrix_a_reduction_kernel.xhtml',1,'arm_compute']]],
+  ['clgemmlowpmatrixbreductionkernel',['CLGEMMLowpMatrixBReductionKernel',['../classarm__compute_1_1_c_l_g_e_m_m_lowp_matrix_b_reduction_kernel.xhtml',1,'arm_compute']]],
+  ['clgemmlowpmatrixmultiplycore',['CLGEMMLowpMatrixMultiplyCore',['../classarm__compute_1_1_c_l_g_e_m_m_lowp_matrix_multiply_core.xhtml',1,'arm_compute']]],
   ['clgemmlowpmatrixmultiplykernel',['CLGEMMLowpMatrixMultiplyKernel',['../classarm__compute_1_1_c_l_g_e_m_m_lowp_matrix_multiply_kernel.xhtml',1,'arm_compute']]],
+  ['clgemmlowpoffsetcontributionkernel',['CLGEMMLowpOffsetContributionKernel',['../classarm__compute_1_1_c_l_g_e_m_m_lowp_offset_contribution_kernel.xhtml',1,'arm_compute']]],
+  ['clgemmlowpquantizedownint32touint8scale',['CLGEMMLowpQuantizeDownInt32ToUint8Scale',['../classarm__compute_1_1_c_l_g_e_m_m_lowp_quantize_down_int32_to_uint8_scale.xhtml',1,'arm_compute']]],
+  ['clgemmlowpquantizedownint32touint8scalebyfixedpoint',['CLGEMMLowpQuantizeDownInt32ToUint8ScaleByFixedPoint',['../classarm__compute_1_1_c_l_g_e_m_m_lowp_quantize_down_int32_to_uint8_scale_by_fixed_point.xhtml',1,'arm_compute']]],
+  ['clgemmlowpquantizedownint32touint8scalebyfixedpointkernel',['CLGEMMLowpQuantizeDownInt32ToUint8ScaleByFixedPointKernel',['../classarm__compute_1_1_c_l_g_e_m_m_lowp_quantize_down_int32_to_uint8_scale_by_fixed_point_kernel.xhtml',1,'arm_compute']]],
+  ['clgemmlowpquantizedownint32touint8scalekernel',['CLGEMMLowpQuantizeDownInt32ToUint8ScaleKernel',['../classarm__compute_1_1_c_l_g_e_m_m_lowp_quantize_down_int32_to_uint8_scale_kernel.xhtml',1,'arm_compute']]],
   ['clgemmmatrixaccumulatebiaseskernel',['CLGEMMMatrixAccumulateBiasesKernel',['../classarm__compute_1_1_c_l_g_e_m_m_matrix_accumulate_biases_kernel.xhtml',1,'arm_compute']]],
   ['clgemmmatrixadditionkernel',['CLGEMMMatrixAdditionKernel',['../classarm__compute_1_1_c_l_g_e_m_m_matrix_addition_kernel.xhtml',1,'arm_compute']]],
   ['clgemmmatrixmultiplykernel',['CLGEMMMatrixMultiplyKernel',['../classarm__compute_1_1_c_l_g_e_m_m_matrix_multiply_kernel.xhtml',1,'arm_compute']]],
@@ -125,8 +133,8 @@
   ['clintegralimagehorkernel',['CLIntegralImageHorKernel',['../classarm__compute_1_1_c_l_integral_image_hor_kernel.xhtml',1,'arm_compute']]],
   ['clintegralimagevertkernel',['CLIntegralImageVertKernel',['../classarm__compute_1_1_c_l_integral_image_vert_kernel.xhtml',1,'arm_compute']]],
   ['clkernellibrary',['CLKernelLibrary',['../classarm__compute_1_1_c_l_kernel_library.xhtml',1,'arm_compute']]],
-  ['cll2normalize',['CLL2Normalize',['../classarm__compute_1_1_c_l_l2_normalize.xhtml',1,'arm_compute']]],
-  ['cll2normalizekernel',['CLL2NormalizeKernel',['../classarm__compute_1_1_c_l_l2_normalize_kernel.xhtml',1,'arm_compute']]],
+  ['cll2normalizelayer',['CLL2NormalizeLayer',['../classarm__compute_1_1_c_l_l2_normalize_layer.xhtml',1,'arm_compute']]],
+  ['cll2normalizelayerkernel',['CLL2NormalizeLayerKernel',['../classarm__compute_1_1_c_l_l2_normalize_layer_kernel.xhtml',1,'arm_compute']]],
   ['cllaplacianpyramid',['CLLaplacianPyramid',['../classarm__compute_1_1_c_l_laplacian_pyramid.xhtml',1,'arm_compute']]],
   ['cllaplacianreconstruct',['CLLaplacianReconstruct',['../classarm__compute_1_1_c_l_laplacian_reconstruct.xhtml',1,'arm_compute']]],
   ['cllkinternalkeypoint',['CLLKInternalKeypoint',['../structarm__compute_1_1_c_l_l_k_internal_keypoint.xhtml',1,'arm_compute']]],
@@ -137,6 +145,7 @@
   ['cllocallyconnectedlayer',['CLLocallyConnectedLayer',['../classarm__compute_1_1_c_l_locally_connected_layer.xhtml',1,'arm_compute']]],
   ['cllocallyconnectedmatrixmultiplykernel',['CLLocallyConnectedMatrixMultiplyKernel',['../classarm__compute_1_1_c_l_locally_connected_matrix_multiply_kernel.xhtml',1,'arm_compute']]],
   ['cllogits1dmaxkernel',['CLLogits1DMaxKernel',['../classarm__compute_1_1_c_l_logits1_d_max_kernel.xhtml',1,'arm_compute']]],
+  ['cllogits1dmaxshiftexpsumkernel',['CLLogits1DMaxShiftExpSumKernel',['../classarm__compute_1_1_c_l_logits1_d_max_shift_exp_sum_kernel.xhtml',1,'arm_compute']]],
   ['cllogits1dnormkernel',['CLLogits1DNormKernel',['../classarm__compute_1_1_c_l_logits1_d_norm_kernel.xhtml',1,'arm_compute']]],
   ['cllogits1dshiftexpsumkernel',['CLLogits1DShiftExpSumKernel',['../classarm__compute_1_1_c_l_logits1_d_shift_exp_sum_kernel.xhtml',1,'arm_compute']]],
   ['cllut',['CLLut',['../classarm__compute_1_1_c_l_lut.xhtml',1,'arm_compute']]],
@@ -214,6 +223,7 @@
   ['clweightsreshapekernel',['CLWeightsReshapeKernel',['../classarm__compute_1_1_c_l_weights_reshape_kernel.xhtml',1,'arm_compute']]],
   ['commandlineparser',['CommandLineParser',['../classarm__compute_1_1test_1_1framework_1_1_command_line_parser.xhtml',1,'arm_compute::test::framework']]],
   ['common_5fpromoted_5fsigned_5ftype',['common_promoted_signed_type',['../structarm__compute_1_1test_1_1common__promoted__signed__type.xhtml',1,'arm_compute::test']]],
+  ['common_5fpromoted_5funsigned_5ftype',['common_promoted_unsigned_type',['../structarm__compute_1_1test_1_1common__promoted__unsigned__type.xhtml',1,'arm_compute::test']]],
   ['compare',['compare',['../structarm__compute_1_1test_1_1validation_1_1compare.xhtml',1,'arm_compute::test::validation']]],
   ['compare_3c_20absolutetolerance_3c_20u_20_3e_20_3e',['compare< AbsoluteTolerance< U > >',['../structarm__compute_1_1test_1_1validation_1_1compare_3_01_absolute_tolerance_3_01_u_01_4_01_4.xhtml',1,'arm_compute::test::validation']]],
   ['compare_3c_20relativetolerance_3c_20u_20_3e_20_3e',['compare< RelativeTolerance< U > >',['../structarm__compute_1_1test_1_1validation_1_1compare_3_01_relative_tolerance_3_01_u_01_4_01_4.xhtml',1,'arm_compute::test::validation']]],
@@ -226,18 +236,22 @@
   ['containerdataset_3c_20std_3a_3avector_3c_20activationlayerinfo_3a_3aactivationfunction_20_3e_20_3e',['ContainerDataset< std::vector< ActivationLayerInfo::ActivationFunction > >',['../classarm__compute_1_1test_1_1framework_1_1dataset_1_1_container_dataset.xhtml',1,'arm_compute::test::framework::dataset']]],
   ['containerdataset_3c_20std_3a_3avector_3c_20bordermode_20_3e_20_3e',['ContainerDataset< std::vector< BorderMode > >',['../classarm__compute_1_1test_1_1framework_1_1dataset_1_1_container_dataset.xhtml',1,'arm_compute::test::framework::dataset']]],
   ['containerdataset_3c_20std_3a_3avector_3c_20convertpolicy_20_3e_20_3e',['ContainerDataset< std::vector< ConvertPolicy > >',['../classarm__compute_1_1test_1_1framework_1_1dataset_1_1_container_dataset.xhtml',1,'arm_compute::test::framework::dataset']]],
+  ['containerdataset_3c_20std_3a_3avector_3c_20gradientdimension_20_3e_20_3e',['ContainerDataset< std::vector< GradientDimension > >',['../classarm__compute_1_1test_1_1framework_1_1dataset_1_1_container_dataset.xhtml',1,'arm_compute::test::framework::dataset']]],
   ['containerdataset_3c_20std_3a_3avector_3c_20interpolationpolicy_20_3e_20_3e',['ContainerDataset< std::vector< InterpolationPolicy > >',['../classarm__compute_1_1test_1_1framework_1_1dataset_1_1_container_dataset.xhtml',1,'arm_compute::test::framework::dataset']]],
   ['containerdataset_3c_20std_3a_3avector_3c_20matrixpattern_20_3e_20_3e',['ContainerDataset< std::vector< MatrixPattern > >',['../classarm__compute_1_1test_1_1framework_1_1dataset_1_1_container_dataset.xhtml',1,'arm_compute::test::framework::dataset']]],
   ['containerdataset_3c_20std_3a_3avector_3c_20nonlinearfilterfunction_20_3e_20_3e',['ContainerDataset< std::vector< NonLinearFilterFunction > >',['../classarm__compute_1_1test_1_1framework_1_1dataset_1_1_container_dataset.xhtml',1,'arm_compute::test::framework::dataset']]],
   ['containerdataset_3c_20std_3a_3avector_3c_20normtype_20_3e_20_3e',['ContainerDataset< std::vector< NormType > >',['../classarm__compute_1_1test_1_1framework_1_1dataset_1_1_container_dataset.xhtml',1,'arm_compute::test::framework::dataset']]],
   ['containerdataset_3c_20std_3a_3avector_3c_20poolingtype_20_3e_20_3e',['ContainerDataset< std::vector< PoolingType > >',['../classarm__compute_1_1test_1_1framework_1_1dataset_1_1_container_dataset.xhtml',1,'arm_compute::test::framework::dataset']]],
   ['containerdataset_3c_20std_3a_3avector_3c_20reductionoperation_20_3e_20_3e',['ContainerDataset< std::vector< ReductionOperation > >',['../classarm__compute_1_1test_1_1framework_1_1dataset_1_1_container_dataset.xhtml',1,'arm_compute::test::framework::dataset']]],
+  ['containerdataset_3c_20std_3a_3avector_3c_20samplingpolicy_20_3e_20_3e',['ContainerDataset< std::vector< SamplingPolicy > >',['../classarm__compute_1_1test_1_1framework_1_1dataset_1_1_container_dataset.xhtml',1,'arm_compute::test::framework::dataset']]],
   ['convertpolicies',['ConvertPolicies',['../classarm__compute_1_1test_1_1datasets_1_1_convert_policies.xhtml',1,'arm_compute::test::datasets']]],
   ['convolutionlayer',['ConvolutionLayer',['../classarm__compute_1_1graph_1_1_convolution_layer.xhtml',1,'arm_compute::graph']]],
   ['convolutionlayerdataset',['ConvolutionLayerDataset',['../classarm__compute_1_1test_1_1datasets_1_1_convolution_layer_dataset.xhtml',1,'arm_compute::test::datasets']]],
   ['convolutionlayerfixture',['ConvolutionLayerFixture',['../classarm__compute_1_1test_1_1_convolution_layer_fixture.xhtml',1,'arm_compute::test']]],
   ['convolutionvalidationfixedpointfixture',['ConvolutionValidationFixedPointFixture',['../classarm__compute_1_1test_1_1validation_1_1_convolution_validation_fixed_point_fixture.xhtml',1,'arm_compute::test::validation']]],
   ['convolutionvalidationfixture',['ConvolutionValidationFixture',['../classarm__compute_1_1test_1_1validation_1_1_convolution_validation_fixture.xhtml',1,'arm_compute::test::validation']]],
+  ['convolutionvalidationgenericfixture',['ConvolutionValidationGenericFixture',['../classarm__compute_1_1test_1_1validation_1_1_convolution_validation_generic_fixture.xhtml',1,'arm_compute::test::validation']]],
+  ['convolutionvalidationquantizedfixture',['ConvolutionValidationQuantizedFixture',['../classarm__compute_1_1test_1_1validation_1_1_convolution_validation_quantized_fixture.xhtml',1,'arm_compute::test::validation']]],
   ['coordinates',['Coordinates',['../classarm__compute_1_1_coordinates.xhtml',1,'arm_compute']]],
   ['coordinates2d',['Coordinates2D',['../structarm__compute_1_1_coordinates2_d.xhtml',1,'arm_compute']]],
   ['coordinates2d',['Coordinates2D',['../struct_coordinates2_d.xhtml',1,'']]],
@@ -245,6 +259,8 @@
   ['countermapping',['CounterMapping',['../structmali__userspace_1_1_counter_mapping.xhtml',1,'mali_userspace']]],
   ['cppcornercandidateskernel',['CPPCornerCandidatesKernel',['../classarm__compute_1_1_c_p_p_corner_candidates_kernel.xhtml',1,'arm_compute']]],
   ['cppdetectionwindownonmaximasuppressionkernel',['CPPDetectionWindowNonMaximaSuppressionKernel',['../classarm__compute_1_1_c_p_p_detection_window_non_maxima_suppression_kernel.xhtml',1,'arm_compute']]],
+  ['cpppermute',['CPPPermute',['../classarm__compute_1_1_c_p_p_permute.xhtml',1,'arm_compute']]],
+  ['cpppermutekernel',['CPPPermuteKernel',['../classarm__compute_1_1_c_p_p_permute_kernel.xhtml',1,'arm_compute']]],
   ['cppscheduler',['CPPScheduler',['../classarm__compute_1_1_c_p_p_scheduler.xhtml',1,'arm_compute']]],
   ['cppsorteuclideandistancekernel',['CPPSortEuclideanDistanceKernel',['../classarm__compute_1_1_c_p_p_sort_euclidean_distance_kernel.xhtml',1,'arm_compute']]],
   ['cpuinfo',['CPUInfo',['../structarm__compute_1_1_c_p_u_info.xhtml',1,'arm_compute']]]