[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] target-arm: Fix GE bits for v6media signed modu
From: |
Aurelien Jarno |
Subject: |
Re: [Qemu-devel] [PATCH] target-arm: Fix GE bits for v6media signed modulo arithmetic |
Date: |
Tue, 22 Mar 2011 07:54:13 +0100 |
User-agent: |
Mutt/1.5.20 (2009-06-14) |
On Thu, Mar 10, 2011 at 06:51:49PM +0000, Peter Maydell wrote:
> Fix the signed modulo arithmetic helpers for the v6media
> instructions (SADD8, SSUB8, SADD16, SSUB16, SASX, SSAX) to set
> the GE bits correctly (based on the result of the add or subtract
> before it is truncated to 16 bits, not after).
>
> Signed-off-by: Peter Maydell <address@hidden>
> ---
> target-arm/helper.c | 4 ++--
> 1 files changed, 2 insertions(+), 2 deletions(-)
Thanks, applied.
> diff --git a/target-arm/helper.c b/target-arm/helper.c
> index d360121..4f2b440 100644
> --- a/target-arm/helper.c
> +++ b/target-arm/helper.c
> @@ -2171,7 +2171,7 @@ static inline uint8_t sub8_usat(uint8_t a, uint8_t b)
> /* Signed modulo arithmetic. */
> #define SARITH16(a, b, n, op) do { \
> int32_t sum; \
> - sum = (int16_t)((uint16_t)(a) op (uint16_t)(b)); \
> + sum = (int32_t)(int16_t)(a) op (int32_t)(int16_t)(b); \
> RESULT(sum, n, 16); \
> if (sum >= 0) \
> ge |= 3 << (n * 2); \
> @@ -2179,7 +2179,7 @@ static inline uint8_t sub8_usat(uint8_t a, uint8_t b)
>
> #define SARITH8(a, b, n, op) do { \
> int32_t sum; \
> - sum = (int8_t)((uint8_t)(a) op (uint8_t)(b)); \
> + sum = (int32_t)(int8_t)(a) op (int32_t)(int8_t)(b); \
> RESULT(sum, n, 8); \
> if (sum >= 0) \
> ge |= 1 << n; \
> --
> 1.7.1
>
>
>
--
Aurelien Jarno GPG: 1024D/F1BCDB73
address@hidden http://www.aurel32.net