Commit 7c417963f7346cf4fdc2a0cc08bdeb0ee7165f8d

Authored by aurel32
1 parent 39dd32ee

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
target-ppc/op.c
... ... @@ -881,13 +881,6 @@ void OPPROTO op_nego_64 (void)
881 881 }
882 882 #endif
883 883  
884   -/* subtract from */
885   -void OPPROTO op_subf (void)
886   -{
887   - T0 = T1 - T0;
888   - RETURN();
889   -}
890   -
891 884 /* subtract from carrying */
892 885 void OPPROTO op_check_subfc (void)
893 886 {
... ...
target-ppc/translate.c
... ... @@ -950,10 +950,14 @@ GEN_INT_ARITH2 (mullw, 0x1F, 0x0B, 0x07, PPC_INTEGER);
950 950 /* neg neg. nego nego. */
951 951 GEN_INT_ARITH1_64 (neg, 0x1F, 0x08, 0x03, PPC_INTEGER);
952 952 /* subf subf. subfo subfo. */
  953 +static always_inline void gen_op_subf (void)
  954 +{
  955 + tcg_gen_sub_tl(cpu_T[0], cpu_T[1], cpu_T[0]);
  956 +}
953 957 static always_inline void gen_op_subfo (void)
954 958 {
955 959 tcg_gen_not_tl(cpu_T[2], cpu_T[0]);
956   - gen_op_subf();
  960 + tcg_gen_sub_tl(cpu_T[0], cpu_T[1], cpu_T[0]);
957 961 gen_op_check_addo();
958 962 }
959 963 #if defined(TARGET_PPC64)
... ... @@ -961,7 +965,7 @@ static always_inline void gen_op_subfo (void)
961 965 static always_inline void gen_op_subfo_64 (void)
962 966 {
963 967 tcg_gen_not_i64(cpu_T[2], cpu_T[0]);
964   - gen_op_subf();
  968 + tcg_gen_sub_tl(cpu_T[0], cpu_T[1], cpu_T[0]);
965 969 gen_op_check_addo_64();
966 970 }
967 971 #endif
... ... @@ -969,26 +973,26 @@ GEN_INT_ARITH2_64 (subf, 0x1F, 0x08, 0x01, PPC_INTEGER);
969 973 /* subfc subfc. subfco subfco. */
970 974 static always_inline void gen_op_subfc (void)
971 975 {
972   - gen_op_subf();
  976 + tcg_gen_sub_tl(cpu_T[0], cpu_T[1], cpu_T[0]);
973 977 gen_op_check_subfc();
974 978 }
975 979 static always_inline void gen_op_subfco (void)
976 980 {
977 981 tcg_gen_not_tl(cpu_T[2], cpu_T[0]);
978   - gen_op_subf();
  982 + tcg_gen_sub_tl(cpu_T[0], cpu_T[1], cpu_T[0]);
979 983 gen_op_check_subfc();
980 984 gen_op_check_addo();
981 985 }
982 986 #if defined(TARGET_PPC64)
983 987 static always_inline void gen_op_subfc_64 (void)
984 988 {
985   - gen_op_subf();
  989 + tcg_gen_sub_tl(cpu_T[0], cpu_T[1], cpu_T[0]);
986 990 gen_op_check_subfc_64();
987 991 }
988 992 static always_inline void gen_op_subfco_64 (void)
989 993 {
990 994 tcg_gen_not_i64(cpu_T[2], cpu_T[0]);
991   - gen_op_subf();
  995 + tcg_gen_sub_tl(cpu_T[0], cpu_T[1], cpu_T[0]);
992 996 gen_op_check_subfc_64();
993 997 gen_op_check_addo_64();
994 998 }
... ...