From 2168a6809a9a59039530fcb02b9ac86f71fbd975 Mon Sep 17 00:00:00 2001 From: Sang-Hoon Park Date: Thu, 21 May 2020 20:34:19 +0100 Subject: COMPMID-3499: Fix integer overflow for large GEMM on NEON Change-Id: Id9eef3abc8a902b52ba61772f716f2ba2b97f7d4 Signed-off-by: Sang-Hoon Park Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/3245 Tested-by: Arm Jenkins Reviewed-by: Michele Di Giorgio Reviewed-by: Manuel Bottini Reviewed-by: Michalis Spyrou Comments-Addressed: Arm Jenkins --- .../kernels/arm_gemm/transforms/a64_block16_interleave4_8bit.hpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/core/NEON/kernels/arm_gemm/transforms/a64_block16_interleave4_8bit.hpp b/src/core/NEON/kernels/arm_gemm/transforms/a64_block16_interleave4_8bit.hpp index 6a15fc42e4..6b742c8776 100644 --- a/src/core/NEON/kernels/arm_gemm/transforms/a64_block16_interleave4_8bit.hpp +++ b/src/core/NEON/kernels/arm_gemm/transforms/a64_block16_interleave4_8bit.hpp @@ -38,7 +38,7 @@ void TransformImpl<4, 16, false, 1, 1, false>::Transform(T *out, const T *in, in uint8_t zerobuff[16] = { 0 }; - for (int y=y0; y(ymax) ; y+=4) { const uint8_t *inptr0 = inptr + y * ldin + k0; const uint8_t *inptr1 = inptr0 + ldin; const uint8_t *inptr2 = inptr1 + ldin; @@ -52,7 +52,7 @@ void TransformImpl<4, 16, false, 1, 1, false>::Transform(T *out, const T *in, in int x=(kmax-k0); for (;x>15;x-=16) { /* Cope with ragged cases by copying from a buffer of zeroes instead */ - if ((y + 3) >= ymax) { + if ((y + 3) >= static_cast(ymax)) { switch ((y + 3) - ymax) { /* Everything falls through in here */ case 2: @@ -90,7 +90,7 @@ void TransformImpl<4, 16, false, 1, 1, false>::Transform(T *out, const T *in, in if (x>0) { /* Need to duplicate this here, in case we didn't run the main loop. */ - if ((y + 3) >= ymax) { + if ((y + 3) >= static_cast(ymax)) { switch ((y + 3) - ymax) { /* Everything falls through in here */ case 2: -- cgit v1.2.1