qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [RFC 08/28] target-xtensa: implement conditional jumps


From: Richard Henderson
Subject: Re: [Qemu-devel] [RFC 08/28] target-xtensa: implement conditional jumps
Date: Wed, 04 May 2011 08:45:30 -0700
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110428 Fedora/3.1.10-1.fc14 Thunderbird/3.1.10

On 05/03/2011 05:59 PM, Max Filippov wrote:
> +                int label = gen_new_label();
> +                int inv = BRI12_M & 1;
> +
> +                switch (BRI12_M & 2) {
> +                case 0: /*BEQZ*/
> +                    tcg_gen_brcondi_i32(inv ? TCG_COND_EQ : TCG_COND_NE,
> +                            cpu_R[BRI12_S], 0, label);
> +                    break;
> +
> +                case 2: /*BLTZ*/
> +                    tcg_gen_brcondi_i32(inv ? TCG_COND_LT : TCG_COND_GE,
> +                            cpu_R[BRI12_S], 0, label);
> +                    break;
> +                }
> +                gen_jumpi(dc, dc->pc + 4 + BRI12_IMM12_SE);
> +                gen_set_label(label);
> +                gen_jumpi(dc, dc->pc + 3);

It seems to me that this code could be cleaned up by extracting
the branching and jumpi'ing into a function.  There's a lot of
repetition here.

Also, once you do get around to using chained TB's, there'll be
only one place to have to update to get that to happen.


r~



reply via email to

[Prev in Thread] Current Thread [Next in Thread]