Revision 7c417963 target-ppc/translate.c

b/target-ppc/translate.c
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 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 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
}

Also available in: Unified diff