diff options
| author | aurel32 | 2008-09-05 16:19:51 +0200 |
|---|---|---|
| committer | aurel32 | 2008-09-05 16:19:51 +0200 |
| commit | 7c417963f7346cf4fdc2a0cc08bdeb0ee7165f8d (patch) | |
| tree | 7dc0db7286e57f8f3ddf914bb5fdcc4f6a4c311e | |
| parent | ppc: Convert op_add, op_addi to TCG (diff) | |
| download | qemu-7c417963f7346cf4fdc2a0cc08bdeb0ee7165f8d.tar.gz qemu-7c417963f7346cf4fdc2a0cc08bdeb0ee7165f8d.tar.xz qemu-7c417963f7346cf4fdc2a0cc08bdeb0ee7165f8d.zip | |
ppc: Convert op_subf to TCG
Replace op_subf with tcg_gen_sub_tl.
Signed-off-by: Andreas Faerber <andreas.faerber@web.de>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5168 c046a42c-6fe2-441c-8c8c-71466251a162
| -rw-r--r-- | target-ppc/op.c | 7 | ||||
| -rw-r--r-- | target-ppc/translate.c | 16 |
2 files changed, 10 insertions, 13 deletions
diff --git a/target-ppc/op.c b/target-ppc/op.c index 4ee411b81a..01b944bc7b 100644 --- a/target-ppc/op.c +++ b/target-ppc/op.c @@ -881,13 +881,6 @@ void OPPROTO op_nego_64 (void) } #endif -/* subtract from */ -void OPPROTO op_subf (void) -{ - T0 = T1 - T0; - RETURN(); -} - /* subtract from carrying */ void OPPROTO op_check_subfc (void) { diff --git a/target-ppc/translate.c b/target-ppc/translate.c index f505be18c3..6561304bba 100644 --- a/target-ppc/translate.c +++ b/target-ppc/translate.c @@ -950,10 +950,14 @@ GEN_INT_ARITH2 (mullw, 0x1F, 0x0B, 0x07, PPC_INTEGER); /* neg neg. nego nego. */ GEN_INT_ARITH1_64 (neg, 0x1F, 0x08, 0x03, PPC_INTEGER); /* subf subf. subfo subfo. */ +static always_inline void gen_op_subf (void) +{ + tcg_gen_sub_tl(cpu_T[0], cpu_T[1], cpu_T[0]); +} static always_inline void gen_op_subfo (void) { tcg_gen_not_tl(cpu_T[2], cpu_T[0]); - gen_op_subf(); + tcg_gen_sub_tl(cpu_T[0], cpu_T[1], cpu_T[0]); gen_op_check_addo(); } #if defined(TARGET_PPC64) @@ -961,7 +965,7 @@ static always_inline void gen_op_subfo (void) static always_inline void gen_op_subfo_64 (void) { tcg_gen_not_i64(cpu_T[2], cpu_T[0]); - gen_op_subf(); + tcg_gen_sub_tl(cpu_T[0], cpu_T[1], cpu_T[0]); gen_op_check_addo_64(); } #endif @@ -969,26 +973,26 @@ GEN_INT_ARITH2_64 (subf, 0x1F, 0x08, 0x01, PPC_INTEGER); /* subfc subfc. subfco subfco. */ static always_inline void gen_op_subfc (void) { - gen_op_subf(); + tcg_gen_sub_tl(cpu_T[0], cpu_T[1], cpu_T[0]); gen_op_check_subfc(); } static always_inline void gen_op_subfco (void) { tcg_gen_not_tl(cpu_T[2], cpu_T[0]); - gen_op_subf(); + tcg_gen_sub_tl(cpu_T[0], cpu_T[1], cpu_T[0]); gen_op_check_subfc(); gen_op_check_addo(); } #if defined(TARGET_PPC64) static always_inline void gen_op_subfc_64 (void) { - gen_op_subf(); + tcg_gen_sub_tl(cpu_T[0], cpu_T[1], cpu_T[0]); gen_op_check_subfc_64(); } static always_inline void gen_op_subfco_64 (void) { tcg_gen_not_i64(cpu_T[2], cpu_T[0]); - gen_op_subf(); + tcg_gen_sub_tl(cpu_T[0], cpu_T[1], cpu_T[0]); gen_op_check_subfc_64(); gen_op_check_addo_64(); } |
