CC_OP = PARAM1;
}
+void OPPROTO op_mov_T0_cc(void)
+{
+ T0 = cc_table[CC_OP].compute_all();
+}
+
/* XXX: clear VIF/VIP in all ops ? */
void OPPROTO op_movl_eflags_T0(void)
void OPPROTO glue(op_loopnz, SUFFIX)(void)
{
- int eflags;
- eflags = cc_table[CC_OP].compute_all();
- if ((DATA_TYPE)ECX != 0 && !(eflags & CC_Z))
+ if ((DATA_TYPE)ECX != 0 && !(T0 & CC_Z))
GOTO_LABEL_PARAM(1);
FORCE_RET();
}
void OPPROTO glue(op_loopz, SUFFIX)(void)
{
- int eflags;
- eflags = cc_table[CC_OP].compute_all();
- if ((DATA_TYPE)ECX != 0 && (eflags & CC_Z))
+ if ((DATA_TYPE)ECX != 0 && (T0 & CC_Z))
GOTO_LABEL_PARAM(1);
FORCE_RET();
}
gen_op_jz_ecx[s->aflag](l1);
} else {
gen_op_dec_ECX[s->aflag]();
+ if (b <= 1)
+ gen_op_mov_T0_cc();
gen_op_loop[s->aflag][b](l1);
}