{
TCGv_i32 value;
TCGCond cond;
- bool global = true;
switch (cc) {
case 0: /* eq: Z */
case 9: /* ls: !C || Z -> !(C && !Z) */
cond = TCG_COND_NE;
value = tcg_temp_new_i32();
- global = false;
/* CF is 1 for C, so -CF is an all-bits-set mask for C;
ZF is non-zero for !Z; so AND the two subexpressions. */
tcg_gen_neg_i32(value, cpu_CF);
/* Since we're only interested in the sign bit, == 0 is >= 0. */
cond = TCG_COND_GE;
value = tcg_temp_new_i32();
- global = false;
tcg_gen_xor_i32(value, cpu_VF, cpu_NF);
break;
case 13: /* le: Z || N != V */
cond = TCG_COND_NE;
value = tcg_temp_new_i32();
- global = false;
/* (N == V) is equal to the sign bit of ~(NF ^ VF). Propagate
* the sign bit then AND with ZF to yield the result. */
tcg_gen_xor_i32(value, cpu_VF, cpu_NF);
no_invert:
cmp->cond = cond;
cmp->value = value;
- cmp->value_global = global;
}
void arm_jump_cc(DisasCompare *cmp, TCGLabel *label)