From patchwork Fri Mar 26 16:07:07 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [47/48] target-arm: fix neon vshll (shift < max) From: Riku Voipio X-Patchwork-Id: 48675 Message-Id: <9b04d1155a105ad03ea2985572ae07ad807605bf.1269617187.git.riku.voipio@nokia.com> To: qemu-devel@nongnu.org Cc: Riku Voipio , =?UTF-8?q?Juha=20Riihim=C3=A4ki?= Date: Fri, 26 Mar 2010 16:07:07 +0000 From: Juha Riihimäki Signed-Off-By: Riku Voipio Signed-off-by: Juha Riihimäki --- target-arm/neon_helper.c | 1 - target-arm/translate.c | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/target-arm/neon_helper.c b/target-arm/neon_helper.c index 7cef783..d75cb47 100644 --- a/target-arm/neon_helper.c +++ b/target-arm/neon_helper.c @@ -1484,7 +1484,6 @@ uint64_t HELPER(neon_negl_u16)(uint64_t x) return result; } -#include uint64_t HELPER(neon_negl_u32)(uint64_t x) { uint32_t low = -x; diff --git a/target-arm/translate.c b/target-arm/translate.c index fd3a72e..cd9dbce 100644 --- a/target-arm/translate.c +++ b/target-arm/translate.c @@ -4855,7 +4855,7 @@ static int disas_neon_data_insn(CPUState * env, DisasContext *s, uint32_t insn) /* The shift is less than the width of the source type, so we can just shift the whole register. */ tcg_gen_shli_i64(cpu_V0, cpu_V0, shift); - if (size < 2 || !u) { + if (size < 2) { uint64_t imm64; if (size == 0) { imm = (0xffu >> (8 - shift)); @@ -4864,7 +4864,7 @@ static int disas_neon_data_insn(CPUState * env, DisasContext *s, uint32_t insn) imm = 0xffff >> (16 - shift); } imm64 = imm | (((uint64_t)imm) << 32); - tcg_gen_andi_i64(cpu_V0, cpu_V0, imm64); + tcg_gen_andi_i64(cpu_V0, cpu_V0, ~imm64); } } neon_store_reg64(cpu_V0, rd + pass);