From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=54078 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PnueZ-0008SI-60 for qemu-devel@nongnu.org; Fri, 11 Feb 2011 10:11:24 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PnueR-0003cs-0W for qemu-devel@nongnu.org; Fri, 11 Feb 2011 10:11:22 -0500 Received: from eu1sys200aog102.obsmtp.com ([207.126.144.113]:37463) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PnueQ-0003cH-ON for qemu-devel@nongnu.org; Fri, 11 Feb 2011 10:11:14 -0500 Received: from zeta.dmz-eu.st.com (ns2.st.com [164.129.230.9]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id F132BBD for ; Fri, 11 Feb 2011 15:11:12 +0000 (GMT) Received: from Webmail-eu.st.com (safex1hubcas5.st.com [10.75.90.71]) by zeta.dmz-eu.st.com (STMicroelectronics) with ESMTP id DD0714D11 for ; Fri, 11 Feb 2011 15:11:12 +0000 (GMT) From: Date: Fri, 11 Feb 2011 16:10:58 +0100 Message-ID: <1297437062-6118-3-git-send-email-christophe.lyon@st.com> In-Reply-To: <1297437062-6118-1-git-send-email-christophe.lyon@st.com> References: <1297437062-6118-1-git-send-email-christophe.lyon@st.com> MIME-Version: 1.0 Content-Type: text/plain Subject: [Qemu-devel] [PATCH 2/6] target-arm: fix Neon right shifts with shift amount == input width. List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org From: Christophe Lyon Fix rshl helpers (s8, s16, s64, u8, u16) Signed-off-by: Christophe Lyon --- target-arm/neon_helper.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff --git a/target-arm/neon_helper.c b/target-arm/neon_helper.c index 3f1f3d4..1ac362f 100644 --- a/target-arm/neon_helper.c +++ b/target-arm/neon_helper.c @@ -548,7 +548,7 @@ uint64_t HELPER(neon_shl_s64)(uint64_t valop, uint64_t shiftop) } else if (tmp < -(ssize_t)sizeof(src1) * 8) { \ dest = src1 >> (sizeof(src1) * 8 - 1); \ } else if (tmp == -(ssize_t)sizeof(src1) * 8) { \ - dest = src1 >> (tmp - 1); \ + dest = src1 >> (-tmp - 1); \ dest++; \ dest >>= 1; \ } else if (tmp < 0) { \ @@ -594,7 +594,7 @@ uint64_t HELPER(neon_rshl_s64)(uint64_t valop, uint64_t shiftop) val = 0; } else if (shift < -64) { val >>= 63; - } else if (shift == -63) { + } else if (shift == -64) { val >>= 63; val++; val >>= 1; @@ -622,7 +622,7 @@ uint64_t HELPER(neon_rshl_s64)(uint64_t valop, uint64_t shiftop) tmp < -(ssize_t)sizeof(src1) * 8) { \ dest = 0; \ } else if (tmp == -(ssize_t)sizeof(src1) * 8) { \ - dest = src1 >> (tmp - 1); \ + dest = src1 >> (-tmp - 1); \ } else if (tmp < 0) { \ dest = (src1 + (1 << (-1 - tmp))) >> -tmp; \ } else { \ -- 1.7.2.3