Richard Henderson <r...@twiddle.net> writes:

> On 05/04/2016 10:12 AM, Laurent Vivier wrote:
>> +    DEST_EA(env, insn, OS_BYTE, dest, NULL);
>> +    tcg_temp_free(dest);
>> +}
>> +
>> +DISAS_INSN(dbcc)
>> +{
>> +    TCGLabel *l1;
>> +    TCGv reg;
>> +    TCGv tmp;
>> +    int16_t offset;
>> +    uint32_t base;
>> +
>> +    reg = DREG(insn, 0);
>> +    base = s->pc;
>> +    offset = (int16_t)read_im16(env, s);
>> +    l1 = gen_new_label();
>> +    gen_jmpcc(s, (insn >> 8) & 0xf, l1);
>> +
>> +    tmp = tcg_temp_new();
>> +    tcg_gen_ext16s_i32(tmp, reg);
>> +    tcg_gen_addi_i32(tmp, tmp, -1);
>> +    gen_partset_reg(OS_WORD, reg, tmp);
>> +    tcg_gen_brcondi_i32(TCG_COND_EQ, tmp, -1, l1);
>> +    update_cc_op(s);
>> +    gen_jmp_tb(s, 1, base + offset);
>> +    gen_set_label(l1);
>> +    update_cc_op(s);
>> +    gen_jmp_tb(s, 0, s->pc);
>
> Pull the update_cc_op up to the top, so as to only generate one copy.

This misses a followup patch which moves it into gen_jmpcc.  In the
current form this would result in a mistranslation.

Andreas.

-- 
Andreas Schwab, sch...@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."

Reply via email to