[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] Support saturation with shift=0.
From: |
Aurelien Jarno |
Subject: |
Re: [Qemu-devel] [PATCH] Support saturation with shift=0. |
Date: |
Wed, 26 Jan 2011 14:33:59 +0100 |
User-agent: |
Mutt/1.5.18 (2008-05-17) |
On Wed, Jan 19, 2011 at 05:10:52PM +0100, Christophe Lyon wrote:
>
> This patch fixes corner-case saturations, when the target range is
> zero. It merely removes the guard against (sh == 0), and makes:
> __ssat(0x87654321, 1) return 0xffffffff and set the saturation flag
> __usat(0x87654321, 0) return 0 and set the saturation flag
>
> Signed-off-by: Christophe Lyon <address@hidden>
> ---
> target-arm/translate.c | 28 ++++++++++++----------------
> 1 files changed, 12 insertions(+), 16 deletions(-)
Thanks, applied.
> diff --git a/target-arm/translate.c b/target-arm/translate.c
> index 721bada..41cbb96 100644
> --- a/target-arm/translate.c
> +++ b/target-arm/translate.c
> @@ -6896,27 +6896,23 @@ static void disas_arm_insn(CPUState * env,
> DisasContext *s)
> tcg_gen_shli_i32(tmp, tmp, shift);
> }
> sh = (insn >> 16) & 0x1f;
> - if (sh != 0) {
> - tmp2 = tcg_const_i32(sh);
> - if (insn & (1 << 22))
> - gen_helper_usat(tmp, tmp, tmp2);
> - else
> - gen_helper_ssat(tmp, tmp, tmp2);
> - tcg_temp_free_i32(tmp2);
> - }
> + tmp2 = tcg_const_i32(sh);
> + if (insn & (1 << 22))
> + gen_helper_usat(tmp, tmp, tmp2);
> + else
> + gen_helper_ssat(tmp, tmp, tmp2);
> + tcg_temp_free_i32(tmp2);
> store_reg(s, rd, tmp);
> } else if ((insn & 0x00300fe0) == 0x00200f20) {
> /* [us]sat16 */
> tmp = load_reg(s, rm);
> sh = (insn >> 16) & 0x1f;
> - if (sh != 0) {
> - tmp2 = tcg_const_i32(sh);
> - if (insn & (1 << 22))
> - gen_helper_usat16(tmp, tmp, tmp2);
> - else
> - gen_helper_ssat16(tmp, tmp, tmp2);
> - tcg_temp_free_i32(tmp2);
> - }
> + tmp2 = tcg_const_i32(sh);
> + if (insn & (1 << 22))
> + gen_helper_usat16(tmp, tmp, tmp2);
> + else
> + gen_helper_ssat16(tmp, tmp, tmp2);
> + tcg_temp_free_i32(tmp2);
> store_reg(s, rd, tmp);
> } else if ((insn & 0x00700fe0) == 0x00000fa0) {
> /* Select bytes. */
> --
> 1.7.2.3
>
>
>
--
Aurelien Jarno GPG: 1024D/F1BCDB73
address@hidden http://www.aurel32.net