qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 39/48] target-arm: fix neon vrshr instruction


From: Riku Voipio
Subject: [Qemu-devel] [PATCH 39/48] target-arm: fix neon vrshr instruction
Date: Fri, 26 Mar 2010 16:06:59 +0000

From: Juha Riihimäki <address@hidden>

Signed-Off-By: Riku Voipio <address@hidden>
Signed-off-by: Juha Riihimäki <address@hidden>
---
 target-arm/neon_helper.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/target-arm/neon_helper.c b/target-arm/neon_helper.c
index 0df13f5..4604698 100644
--- a/target-arm/neon_helper.c
+++ b/target-arm/neon_helper.c
@@ -573,7 +573,13 @@ uint64_t HELPER(neon_rshl_u64)(uint64_t val, uint64_t 
shiftop)
         /* Rounding a 1-bit result just preserves that bit.  */
         val >>= 63;
     } if (shift < 0) {
-        val = (val + ((uint64_t)1 << (-1 - shift))) >> -shift;
+        uint64_t r = ((uint64_t)1 << (-1 - shift));
+        uint64_t lo = val + r;
+        if (lo < val || lo < r) {
+            val = (lo >> -shift) | ((1ull << 63) >> (-shift - 1));
+        } else {
+            val = lo >> -shift;
+        }
     } else {
         val <<= shift;
     }
-- 
1.6.5





reply via email to

[Prev in Thread] Current Thread [Next in Thread]