From 3c6dc743aab5900d8436875f77b2cfd3b0ea893d Mon Sep 17 00:00:00 2001 From: Linfeng Zhang Date: Mon, 26 Feb 2018 17:00:10 -0800 Subject: [PATCH] Fix a bug in create_s16x4_neon() This bug exposes when 2nd argument is negative, and the higher 32 bits would be all 1s. Change-Id: I189ee8cd3753fde00a34847e7a37cde2caa4ba72 --- vpx_dsp/arm/mem_neon.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/vpx_dsp/arm/mem_neon.h b/vpx_dsp/arm/mem_neon.h index 2027a1d8d..12c0a54c8 100644 --- a/vpx_dsp/arm/mem_neon.h +++ b/vpx_dsp/arm/mem_neon.h @@ -21,9 +21,8 @@ static INLINE int16x4_t create_s16x4_neon(const int16_t c0, const int16_t c1, const int16_t c2, const int16_t c3) { - return vcreate_s16((uint16_t)c0 | ((uint16_t)c1 << 16) | - ((int64_t)(uint16_t)c2 << 32) | - ((int64_t)(uint16_t)c3 << 48)); + return vcreate_s16((uint16_t)c0 | ((uint32_t)c1 << 16) | + ((int64_t)(uint16_t)c2 << 32) | ((int64_t)c3 << 48)); } static INLINE int32x2_t create_s32x2_neon(const int32_t c0, const int32_t c1) { -- 2.40.0