Revision 76f13133 target-i386/translate.c

b/target-i386/translate.c
4182 4182
                if (!(s->cpuid_7_0_ebx_features & CPUID_7_0_EBX_ADX)) {
4183 4183
                    goto illegal_op;
4184 4184
                } else {
4185
                    TCGv carry_in, carry_out;
4185
                    TCGv carry_in, carry_out, zero;
4186 4186
                    int end_op;
4187 4187

  
4188 4188
                    ot = (s->dflag == 2 ? OT_QUAD : OT_LONG);
......
4242 4242
#endif
4243 4243
                    default:
4244 4244
                        /* Otherwise compute the carry-out in two steps.  */
4245
                        tcg_gen_add_tl(cpu_T[0], cpu_T[0], cpu_regs[reg]);
4246
                        tcg_gen_setcond_tl(TCG_COND_LTU, cpu_tmp4,
4247
                                           cpu_T[0], cpu_regs[reg]);
4248
                        tcg_gen_add_tl(cpu_regs[reg], cpu_T[0], carry_in);
4249
                        tcg_gen_setcond_tl(TCG_COND_LTU, carry_out,
4250
                                           cpu_regs[reg], cpu_T[0]);
4251
                        tcg_gen_or_tl(carry_out, carry_out, cpu_tmp4);
4245
                        zero = tcg_const_tl(0);
4246
                        tcg_gen_add2_tl(cpu_T[0], carry_out,
4247
                                        cpu_T[0], zero,
4248
                                        carry_in, zero);
4249
                        tcg_gen_add2_tl(cpu_regs[reg], carry_out,
4250
                                        cpu_regs[reg], carry_out,
4251
                                        cpu_T[0], zero);
4252
                        tcg_temp_free(zero);
4252 4253
                        break;
4253 4254
                    }
4254
                    /* We began with all flags computed to CC_SRC, and we
4255
                       have now placed the carry-out in CC_DST.  All that
4256
                       is left is to record the CC_OP.  */
4257 4255
                    set_cc_op(s, end_op);
4258 4256
                }
4259 4257
                break;

Also available in: Unified diff