[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH RFC v1 02/29] target-arc: ADC, ADD, ADD1, ADD2,
From: |
Richard Henderson |
Subject: |
Re: [Qemu-devel] [PATCH RFC v1 02/29] target-arc: ADC, ADD, ADD1, ADD2, ADD3 |
Date: |
Tue, 20 Sep 2016 13:51:07 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 |
On 09/08/2016 03:31 PM, Michael Rolnik wrote:
> Signed-off-by: Michael Rolnik <address@hidden>
> ---
> target-arc/Makefile.objs | 1 +
> target-arc/translate-inst.c | 170
> ++++++++++++++++++++++++++++++++++++++++++++
> target-arc/translate-inst.h | 30 ++++++++
> 3 files changed, 201 insertions(+)
> create mode 100644 target-arc/translate-inst.c
> create mode 100644 target-arc/translate-inst.h
Please don't split translate.c into translate-inst.* and decode.c like you did
for AVR. Since you're not generating any source from a template, there's even
less call for it here than before.
> +static void gen_add_Cf(TCGv dest, TCGv src1, TCGv src2)
> +{
> + TCGv t1 = tcg_temp_new_i32();
> + TCGv t2 = tcg_temp_new_i32();
> + TCGv t3 = tcg_temp_new_i32();
> +
> + tcg_gen_and_tl(t1, src1, src2); /* t1 = src1 & src2
> */
> + tcg_gen_andc_tl(t2, src1, dest);/* t2 = src1 & ~dest
> */
> + tcg_gen_andc_tl(t3, src2, dest);/* t3 = src2 & ~dest
> */
> + tcg_gen_or_tl(t1, t1, t2); /* t1 = t1 | t2 | t3
> */
> + tcg_gen_or_tl(t1, t1, t3);
> +
> + tcg_gen_shri_tl(cpu_Cf, t1, 31);/* Cf = t1(31)
> */
I've shown you before how to generate a carry bit from tcg_gen_add2_tl.
> +int arc_gen_ADC(DisasCtxt *ctx, TCGv dest, TCGv src1, TCGv src2)
> +{
> + TCGv rslt = dest;
> +
> + if (TCGV_EQUAL(dest, src1) || TCGV_EQUAL(dest, src2)) {
> + rslt = tcg_temp_new_i32();
> + }
It would be cleaner to simply always use a temporary. The tcg optimizer will
generate the same code either way.
r~
- [Qemu-devel] [PATCH RFC v1 00/29] ARC cores, Michael Rolnik, 2016/09/08
- [Qemu-devel] [PATCH RFC v1 02/29] target-arc: ADC, ADD, ADD1, ADD2, ADD3, Michael Rolnik, 2016/09/08
- Re: [Qemu-devel] [PATCH RFC v1 02/29] target-arc: ADC, ADD, ADD1, ADD2, ADD3,
Richard Henderson <=
- [Qemu-devel] [PATCH RFC v1 04/29] target-arc: AND, OR, XOR, BIC, TST, Michael Rolnik, 2016/09/08
- [Qemu-devel] [PATCH RFC v1 03/29] target-arc: SUB, SUB1, SUB2, SUB3, SBC, RSUB, CMP, Michael Rolnik, 2016/09/08
- [Qemu-devel] [PATCH RFC v1 09/29] target-arc: NEG, ABS, NOT, Michael Rolnik, 2016/09/08
- [Qemu-devel] [PATCH RFC v1 07/29] target-arc: MAX, MIN, Michael Rolnik, 2016/09/08
- [Qemu-devel] [PATCH RFC v1 01/29] target-arc: initial commit, Michael Rolnik, 2016/09/08