From fe13c4835145c278c306141fceee9c8edf8362dc Mon Sep 17 00:00:00 2001 From: Georgios Pinitas Date: Mon, 16 Dec 2019 19:23:02 +0000 Subject: COMPMID-2819: Perform sqrt in double domain for L2 pooling. Signed-off-by: Georgios Pinitas Change-Id: I51d50ceda903c4322b659cd872d041d7db73c335 Reviewed-on: https://review.mlplatform.org/c/2481 --- src/core/NEON/kernels/NEPoolingLayerKernel.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/core/NEON/kernels/NEPoolingLayerKernel.cpp b/src/core/NEON/kernels/NEPoolingLayerKernel.cpp index 62c9ca0d5e..5be6f5b6f0 100644 --- a/src/core/NEON/kernels/NEPoolingLayerKernel.cpp +++ b/src/core/NEON/kernels/NEPoolingLayerKernel.cpp @@ -1574,7 +1574,12 @@ void NEPoolingLayerKernel::poolingMxN_f32_nhwc(const Window &window_input, const // Calculate square-root in case of l2 pooling if(pooling_type == PoolingType::L2) { - vres = vmulq_f32(vres, vinvsqrtq_f32(vres)); + float32x4_t l2_res = { static_cast(sqrt(vgetq_lane_f32(vres, 0))), + static_cast(sqrt(vgetq_lane_f32(vres, 1))), + static_cast(sqrt(vgetq_lane_f32(vres, 2))), + static_cast(sqrt(vgetq_lane_f32(vres, 3))) + }; + vres = l2_res; } // Store result -- cgit v1.2.1