Revision bdf9f35d target-sparc/translate.c
b/target-sparc/translate.c | ||
---|---|---|
459 | 459 |
gen_set_label(l1); |
460 | 460 |
} |
461 | 461 |
|
462 |
static inline void gen_op_add_cc2(TCGv dst) |
|
463 |
{ |
|
464 |
gen_cc_clear_icc(); |
|
465 |
gen_cc_NZ_icc(cpu_cc_dst); |
|
466 |
gen_cc_C_add_icc(cpu_cc_dst, cpu_cc_src); |
|
467 |
gen_cc_V_add_icc(cpu_cc_dst, cpu_cc_src, cpu_cc_src2); |
|
468 |
#ifdef TARGET_SPARC64 |
|
469 |
gen_cc_clear_xcc(); |
|
470 |
gen_cc_NZ_xcc(cpu_cc_dst); |
|
471 |
gen_cc_C_add_xcc(cpu_cc_dst, cpu_cc_src); |
|
472 |
gen_cc_V_add_xcc(cpu_cc_dst, cpu_cc_src, cpu_cc_src2); |
|
473 |
#endif |
|
474 |
tcg_gen_mov_tl(dst, cpu_cc_dst); |
|
475 |
} |
|
476 |
|
|
477 | 462 |
static inline void gen_op_addi_cc(TCGv dst, TCGv src1, target_long src2) |
478 | 463 |
{ |
479 | 464 |
tcg_gen_mov_tl(cpu_cc_src, src1); |
480 | 465 |
tcg_gen_movi_tl(cpu_cc_src2, src2); |
481 | 466 |
tcg_gen_addi_tl(cpu_cc_dst, cpu_cc_src, src2); |
482 |
gen_op_add_cc2(dst);
|
|
467 |
tcg_gen_mov_tl(dst, cpu_cc_dst);
|
|
483 | 468 |
} |
484 | 469 |
|
485 | 470 |
static inline void gen_op_add_cc(TCGv dst, TCGv src1, TCGv src2) |
... | ... | |
487 | 472 |
tcg_gen_mov_tl(cpu_cc_src, src1); |
488 | 473 |
tcg_gen_mov_tl(cpu_cc_src2, src2); |
489 | 474 |
tcg_gen_add_tl(cpu_cc_dst, cpu_cc_src, cpu_cc_src2); |
490 |
gen_op_add_cc2(dst);
|
|
475 |
tcg_gen_mov_tl(dst, cpu_cc_dst);
|
|
491 | 476 |
} |
492 | 477 |
|
493 | 478 |
static inline void gen_op_addx_cc2(TCGv dst) |
... | ... | |
3153 | 3138 |
simm = GET_FIELDs(insn, 19, 31); |
3154 | 3139 |
if (xop & 0x10) { |
3155 | 3140 |
gen_op_addi_cc(cpu_dst, cpu_src1, simm); |
3156 |
tcg_gen_movi_i32(cpu_cc_op, CC_OP_FLAGS);
|
|
3157 |
dc->cc_op = CC_OP_FLAGS;
|
|
3141 |
tcg_gen_movi_i32(cpu_cc_op, CC_OP_ADD);
|
|
3142 |
dc->cc_op = CC_OP_ADD;
|
|
3158 | 3143 |
} else { |
3159 | 3144 |
tcg_gen_addi_tl(cpu_dst, cpu_src1, simm); |
3160 | 3145 |
} |
3161 | 3146 |
} else { |
3162 | 3147 |
if (xop & 0x10) { |
3163 | 3148 |
gen_op_add_cc(cpu_dst, cpu_src1, cpu_src2); |
3164 |
tcg_gen_movi_i32(cpu_cc_op, CC_OP_FLAGS);
|
|
3165 |
dc->cc_op = CC_OP_FLAGS;
|
|
3149 |
tcg_gen_movi_i32(cpu_cc_op, CC_OP_ADD);
|
|
3150 |
dc->cc_op = CC_OP_ADD;
|
|
3166 | 3151 |
} else { |
3167 | 3152 |
tcg_gen_add_tl(cpu_dst, cpu_src1, cpu_src2); |
3168 | 3153 |
} |
Also available in: Unified diff