mirror of https://github.com/proxmox/mirror_qemu
target-i386: Discard CC_OP computation in set_cc_op also
The shift and rotate insns use movcond to set CC_OP, and thus achieve a conditional EFLAGS setting. By discarding CC_OP in a later flags setting insn, we can discard that movcond. Signed-off-by: Richard Henderson <rth@twiddle.net>master
parent
34d80a55ff
commit
e2f515cf2f
|
@ -239,10 +239,18 @@ static void set_cc_op(DisasContext *s, CCOp op)
|
|||
tcg_gen_discard_tl(cpu_cc_srcT);
|
||||
}
|
||||
|
||||
if (op == CC_OP_DYNAMIC) {
|
||||
/* The DYNAMIC setting is translator only, and should never be
|
||||
stored. Thus we always consider it clean. */
|
||||
s->cc_op_dirty = false;
|
||||
} else {
|
||||
/* Discard any computed CC_OP value (see shifts). */
|
||||
if (s->cc_op == CC_OP_DYNAMIC) {
|
||||
tcg_gen_discard_i32(cpu_cc_op);
|
||||
}
|
||||
s->cc_op_dirty = true;
|
||||
}
|
||||
s->cc_op = op;
|
||||
/* The DYNAMIC setting is translator only, and should never be
|
||||
stored. Thus we always consider it clean. */
|
||||
s->cc_op_dirty = (op != CC_OP_DYNAMIC);
|
||||
}
|
||||
|
||||
static void gen_update_cc_op(DisasContext *s)
|
||||
|
|
Loading…
Reference in New Issue