Revision f5847c91 target-i386/translate.c

b/target-i386/translate.c
51 51

  
52 52
/* global register indexes */
53 53
static TCGv_ptr cpu_env;
54
static TCGv cpu_A0, cpu_cc_src, cpu_cc_dst, cpu_cc_tmp;
54
static TCGv cpu_A0, cpu_cc_src, cpu_cc_dst;
55 55
static TCGv_i32 cpu_cc_op;
56 56
static TCGv cpu_regs[CPU_NB_REGS];
57 57
/* local temps */
......
1706 1706
static void gen_rotc_rm_T1(DisasContext *s, int ot, int op1, 
1707 1707
                           int is_right)
1708 1708
{
1709
    int label1;
1710

  
1711 1709
    if (s->cc_op != CC_OP_DYNAMIC)
1712 1710
        gen_op_set_cc_op(s->cc_op);
1711
    gen_compute_eflags(cpu_cc_src);
1712
    tcg_gen_discard_tl(cpu_cc_dst);
1713
    s->cc_op = CC_OP_EFLAGS;
1713 1714

  
1714 1715
    /* load */
1715 1716
    if (op1 == OR_TMP0)
......
1757 1758
        gen_op_st_T0_A0(ot + s->mem_index);
1758 1759
    else
1759 1760
        gen_op_mov_reg_T0(ot, op1);
1760

  
1761
    /* update eflags */
1762
    label1 = gen_new_label();
1763
    tcg_gen_brcondi_tl(TCG_COND_EQ, cpu_cc_tmp, -1, label1);
1764

  
1765
    tcg_gen_mov_tl(cpu_cc_src, cpu_cc_tmp);
1766
    tcg_gen_discard_tl(cpu_cc_dst);
1767
    tcg_gen_movi_i32(cpu_cc_op, CC_OP_EFLAGS);
1768
        
1769
    gen_set_label(label1);
1770
    s->cc_op = CC_OP_DYNAMIC; /* cannot predict flags after */
1771 1761
}
1772 1762

  
1773 1763
/* XXX: add faster immediate case */
......
7763 7753
                                    "cc_src");
7764 7754
    cpu_cc_dst = tcg_global_mem_new(TCG_AREG0, offsetof(CPUX86State, cc_dst),
7765 7755
                                    "cc_dst");
7766
    cpu_cc_tmp = tcg_global_mem_new(TCG_AREG0, offsetof(CPUX86State, cc_tmp),
7767
                                    "cc_tmp");
7768 7756

  
7769 7757
#ifdef TARGET_X86_64
7770 7758
    cpu_regs[R_EAX] = tcg_global_mem_new_i64(TCG_AREG0,

Also available in: Unified diff