From d42c1f37be18e716dff7705d38e66222d975114c Mon Sep 17 00:00:00 2001 From: Michele Di Giorgio Date: Wed, 19 Feb 2020 15:55:01 +0000 Subject: COMPMID-3209: Failing VTS/NN Tests on CpuAcc for avg_pool_quant and mobilenet quant Rounding-to-nearest is already taken into account by adding 0.5f to the result, so no need to use vcvtnq. Change-Id: I2ee78d0abd5d1fb2c7d3133c316cb48d59d2497b Signed-off-by: Michele Di Giorgio Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/2751 Reviewed-by: James Conroy Comments-Addressed: Arm Jenkins Tested-by: Arm Jenkins --- src/core/NEON/kernels/NEPoolingLayerKernel.cpp | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/src/core/NEON/kernels/NEPoolingLayerKernel.cpp b/src/core/NEON/kernels/NEPoolingLayerKernel.cpp index 349e64640c..326bc77fcd 100644 --- a/src/core/NEON/kernels/NEPoolingLayerKernel.cpp +++ b/src/core/NEON/kernels/NEPoolingLayerKernel.cpp @@ -329,21 +329,13 @@ inline T vcvtq_q32_f32(float32x4_t values); template <> inline uint32x4_t vcvtq_q32_f32(float32x4_t values) { -#ifdef __aarch64__ - return vcvtnq_u32_f32(values); -#else //__aarch64__ return vcvtq_u32_f32(values); -#endif //__aarch64__ } template <> inline int32x4_t vcvtq_q32_f32(float32x4_t values) { -#ifdef __aarch64__ - return vcvtnq_s32_f32(values); -#else //__aarch64__ return vcvtq_s32_f32(values); -#endif //__aarch64__ } template @@ -1904,10 +1896,10 @@ void NEPoolingLayerKernel::poolingMxN_q8_nhwc(const Window &window_input, const const UniformQuantizationInfo input_qinfo = _input->info()->quantization_info().uniform(); const UniformQuantizationInfo output_qinfo = _output->info()->quantization_info().uniform(); - const float quant_rescale = output_qinfo.scale / input_qinfo.scale; + const float quant_rescale = output_qinfo.scale / input_qinfo.scale; // "new_offset" doesn't have to consider the "half_scale_v" in its computation // With a requantization performed in a single step there won't be uncertainties introduced - const int32_t new_offset = output_qinfo.offset - static_cast( static_cast(input_qinfo.offset) / quant_rescale); + const int32_t new_offset = output_qinfo.offset - static_cast(static_cast(input_qinfo.offset) / quant_rescale); const float requant_scale = output_qinfo.scale / input_qinfo.scale; const int32_t requant_offset = output_qinfo.offset - static_cast(static_cast(input_qinfo.offset) / requant_scale); -- cgit v1.2.1