target-arm: Fix 32 bit signed saturating narrow
authorPeter Maydell <peter.maydell@linaro.org>
Wed, 9 Feb 2011 15:42:33 +0000 (15:42 +0000)
committerAurelien Jarno <aurelien@aurel32.net>
Wed, 9 Feb 2011 18:37:48 +0000 (19:37 +0100)
The returned value when doing saturating signed 64->32 bit
conversion of a negative number was incorrect due to a missing cast.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
target-arm/neon_helper.c

index a7cf383cdd54262df6a9f69c84dee7980817930d..61890dd69a8feef67e21d2562a8dbf0c28453575 100644 (file)
@@ -1209,7 +1209,7 @@ uint32_t HELPER(neon_narrow_sat_s32)(CPUState *env, uint64_t x)
 {
     if ((int64_t)x != (int32_t)x) {
         SET_QC();
-        return (x >> 63) ^ 0x7fffffff;
+        return ((int64_t)x >> 63) ^ 0x7fffffff;
     }
     return x;
 }