[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3 07/15] target-tricore: Add instructions of SR
From: |
Richard Henderson |
Subject: |
Re: [Qemu-devel] [PATCH v3 07/15] target-tricore: Add instructions of SRR opcode format |
Date: |
Mon, 04 Aug 2014 09:14:29 -1000 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.7.0 |
On 08/04/2014 07:38 AM, Bastian Koppelmann wrote:
> +target_ulong helper_add_ssov(CPUTRICOREState *env, target_ulong r1,
> + target_ulong r2)
> +{
> + target_ulong ret;
> + int64_t result = (int64_t)r1 + (int64_t)r2;
> + SSOV(env, ret, result, 32);
> + return ret;
> +}
> +
> +target_ulong helper_sub_ssov(CPUTRICOREState *env, target_ulong r1,
> + target_ulong r2)
> +{
> + target_ulong ret;
> + int64_t result = (int64_t)r1 - (int64_t)r2;
> + SSOV(env, ret, result, 32);
> + return ret;
> +}
> +
This zero-extends r1 and r2; you need to sign-extend in order for your
saturation to work.
> + tcg_gen_sub2_tl(ret, cpu_PSW_V, r1, t0, r2, t0);
> + gen_calc_psw_sv_i32(cpu_PSW_SV, cpu_PSW_V);
This computes neither carry nor overflow.
> + /* mul and set V/SV bits */
> + tcg_gen_muls2_tl(ret, cpu_PSW_V, r1, r2);
Overflow computation requires that you compare the high part of the result vs
the sign of the low part of the result. I.e.
overflow = (high != (low >> 31));
r~
- [Qemu-devel] [PATCH v3 00/15] TriCore architecture guest implementation, Bastian Koppelmann, 2014/08/04
- [Qemu-devel] [PATCH v3 01/15] target-tricore: Add target stubs and qom-cpu, Bastian Koppelmann, 2014/08/04
- [Qemu-devel] [PATCH v3 11/15] target-tricore: Add instructions of SBC and SBRN opcode format, Bastian Koppelmann, 2014/08/04
- [Qemu-devel] [PATCH v3 07/15] target-tricore: Add instructions of SRR opcode format, Bastian Koppelmann, 2014/08/04
- Re: [Qemu-devel] [PATCH v3 07/15] target-tricore: Add instructions of SRR opcode format,
Richard Henderson <=
- [Qemu-devel] [PATCH v3 03/15] target-tricore: Add softmmu support, Bastian Koppelmann, 2014/08/04
- [Qemu-devel] [PATCH v3 10/15] target-tricore: Add instructions of SB opcode format, Bastian Koppelmann, 2014/08/04
- [Qemu-devel] [PATCH v3 09/15] target-tricore: Add instructions of SRRS and SLRO opcode format, Bastian Koppelmann, 2014/08/04
- [Qemu-devel] [PATCH v3 08/15] target-tricore: Add instructions of SSR opcode format, Bastian Koppelmann, 2014/08/04
- [Qemu-devel] [PATCH v3 02/15] target-tricore: Add board for systemmode, Bastian Koppelmann, 2014/08/04
- [Qemu-devel] [PATCH v3 04/15] target-tricore: Add initialization for translation and activate target, Bastian Koppelmann, 2014/08/04
- [Qemu-devel] [PATCH v3 13/15] target-tricore: Add instructions of SC opcode format, Bastian Koppelmann, 2014/08/04
- [Qemu-devel] [PATCH v3 06/15] target-tricore: Add instructions of SRC opcode format, Bastian Koppelmann, 2014/08/04
- [Qemu-devel] [PATCH v3 14/15] target-tricore: Add instructions of SLR, SSRO and SRO opcode format, Bastian Koppelmann, 2014/08/04