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."