Commit 20c4c97c9b9bcc413371e1b78e7db5306eb7fdd6
1 parent
a4e7dd52
Switch MIPS movn/movz to TCG.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4506 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
2 changed files
with
14 additions
and
16 deletions
target-mips/op.c
... | ... | @@ -510,20 +510,6 @@ void op_dmultu (void) |
510 | 510 | #endif |
511 | 511 | |
512 | 512 | /* Conditional moves */ |
513 | -void op_movn (void) | |
514 | -{ | |
515 | - if (T1 != 0) | |
516 | - env->gpr[env->current_tc][PARAM1] = T0; | |
517 | - FORCE_RET(); | |
518 | -} | |
519 | - | |
520 | -void op_movz (void) | |
521 | -{ | |
522 | - if (T1 == 0) | |
523 | - env->gpr[env->current_tc][PARAM1] = T0; | |
524 | - FORCE_RET(); | |
525 | -} | |
526 | - | |
527 | 513 | void op_movf (void) |
528 | 514 | { |
529 | 515 | if (!(env->fpu->fcr31 & PARAM1)) | ... | ... |
target-mips/translate.c
... | ... | @@ -1707,11 +1707,23 @@ static void gen_arith (CPUState *env, DisasContext *ctx, uint32_t opc, |
1707 | 1707 | opn = "mul"; |
1708 | 1708 | break; |
1709 | 1709 | case OPC_MOVN: |
1710 | - gen_op_movn(rd); | |
1710 | + { | |
1711 | + int l1 = gen_new_label(); | |
1712 | + | |
1713 | + tcg_gen_brcond_tl(TCG_COND_EQ, cpu_T[1], tcg_const_tl(0), l1); | |
1714 | + gen_op_store_gpr_T0(rd); | |
1715 | + gen_set_label(l1); | |
1716 | + } | |
1711 | 1717 | opn = "movn"; |
1712 | 1718 | goto print; |
1713 | 1719 | case OPC_MOVZ: |
1714 | - gen_op_movz(rd); | |
1720 | + { | |
1721 | + int l1 = gen_new_label(); | |
1722 | + | |
1723 | + tcg_gen_brcond_tl(TCG_COND_NE, cpu_T[1], tcg_const_tl(0), l1); | |
1724 | + gen_op_store_gpr_T0(rd); | |
1725 | + gen_set_label(l1); | |
1726 | + } | |
1715 | 1727 | opn = "movz"; |
1716 | 1728 | goto print; |
1717 | 1729 | case OPC_SLLV: | ... | ... |