From patchwork Wed Jan 19 19:29:53 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: target-arm: Fix loading of scalar value for Neon multiply-by-scalar X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 79581 Message-Id: <1295465393-1620-1-git-send-email-peter.maydell@linaro.org> To: qemu-devel@nongnu.org Cc: Christophe Lyon , patches@linaro.org Date: Wed, 19 Jan 2011 19:29:53 +0000 From: Peter Maydell List-Id: qemu-devel.nongnu.org Fix the register and part of register we get the scalar from in the various "multiply vector by scalar" ops (VMUL by scalar and friends). Signed-off-by: Peter Maydell --- target-arm/translate.c | 12 ++++++------ 1 files changed, 6 insertions(+), 6 deletions(-) diff --git a/target-arm/translate.c b/target-arm/translate.c index c60cd18..0c2856a 100644 --- a/target-arm/translate.c +++ b/target-arm/translate.c @@ -3608,14 +3608,14 @@ static inline TCGv neon_get_scalar(int size, int reg) { TCGv tmp; if (size == 1) { - tmp = neon_load_reg(reg >> 1, reg & 1); - } else { - tmp = neon_load_reg(reg >> 2, (reg >> 1) & 1); - if (reg & 1) { - gen_neon_dup_low16(tmp); - } else { + tmp = neon_load_reg(reg & 7, reg >> 4); + if (reg & 8) { gen_neon_dup_high16(tmp); + } else { + gen_neon_dup_low16(tmp); } + } else { + tmp = neon_load_reg(reg & 15, reg >> 4); } return tmp; }