On 10/12/20 8:37 AM, Peter Maydell wrote: > + nextlabel = gen_new_label(); > + tcg_gen_brcondi_i32(TCG_COND_NE, cpu_R[a->rn], 0, nextlabel); > + gen_jmp(s, read_pc(s) + a->imm); > + > + gen_set_label(nextlabel); > + tmp = load_reg(s, a->rn); > + store_reg(s, 14, tmp); > + gen_jmp(s, s->base.pc_next); > + return true;
Oh, fwiw, with the tcg optimization patches just posted, this branch is better inverted. That way the load of rn can be reused on the non-taken branch path. Maybe sometime I'll try to propagate the data to the taken path, but that automatically requires extra memory allocation, so it'll be difficult to do that without a tcg slowdown. r~