]> git.proxmox.com Git - qemu.git/commitdiff
target-arm: Fix loading of scalar value for Neon multiply-by-scalar
authorPeter Maydell <peter.maydell@linaro.org>
Wed, 19 Jan 2011 19:29:53 +0000 (19:29 +0000)
committerAurelien Jarno <aurelien@aurel32.net>
Wed, 26 Jan 2011 13:30:24 +0000 (14:30 +0100)
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 <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
target-arm/translate.c

index 41cbb96ab03d92c293d4ce56ba4a83c5c10d6faa..d95133f725f40f3ed551d0de35b6c9a7b1996362 100644 (file)
@@ -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;
 }