More fixes

This commit is contained in:
dingusdev 2024-09-24 06:38:38 -07:00
parent cb39be991f
commit de61c26484
2 changed files with 6 additions and 22 deletions

View File

@ -44,7 +44,7 @@ POWEROPCODEOVREC (abs,
} else {
ppc_result_d = (int32_t(ppc_result_a) < 0) ? -ppc_result_a : ppc_result_a;
if (ov)
ppc_unset_xer(XER::SO | XER::OV);
ppc_unset_xer(XER::OV);
}
if (rec)
@ -114,7 +114,7 @@ POWEROPCODEOVREC (div,
if (((quotient >> 31) + 1) & ~1) {
ppc_set_xer(XER::SO | XER::OV);
} else {
ppc_unset_xer(XER::SO | XER::OV);
ppc_unset_xer(XER::OV);
}
}
}
@ -150,7 +150,7 @@ POWEROPCODEOVREC (divs,
ppc_result_d = int32_t(ppc_result_a) / int32_t(ppc_result_b);
remainder = (int32_t(ppc_result_a) % int32_t(ppc_result_b));
if (ov)
ppc_unset_xer(XER::SO | XER::OV);
ppc_unset_xer(XER::OV);
}
if (rec)
ppc_changecrf0(remainder);
@ -173,7 +173,7 @@ POWEROPCODEOVREC (doz,
if (int32_t(ppc_result_d) < 0) {
ppc_set_xer(XER::SO | XER::OV);
} else {
ppc_unset_xer(XER::SO | XER::OV);
ppc_unset_xer(XER::OV);
}
}
if (rec)
@ -301,7 +301,7 @@ POWEROPCODEOVREC (mul,
if (uint64_t(product >> 31) + 1 & ~1) {
ppc_set_xer(XER::SO | XER::OV);
} else {
ppc_unset_xer(XER::SO | XER::OV);
ppc_unset_xer(XER::OV);
}
}
if (rec)
@ -319,7 +319,7 @@ POWEROPCODEOVREC (nabs,
uint32_t ppc_result_d = (int32_t(ppc_result_a) < 0) ? ppc_result_a : -ppc_result_a;
if (ov)
ppc_unset_xer(XER::SO | XER::OV);
ppc_unset_xer(XER::OV);
if (rec)
ppc_changecrf0(ppc_result_d);

View File

@ -633,110 +633,94 @@ template <field_rc rec> void power_srq(uint32_t instr);
// G5+ instructions
#undef OPCODE
#define OPCODE(op, ...) \
void dppc_interpreter::ppc_##op(uint32_t instr) { \
##__VA_ARGS__ \
}
#undef POWEROPCODE
#define POWEROPCODE(op, ...) \
void dppc_interpreter::power_##op(uint32_t instr) { \
##__VA_ARGS__ \
}
#undef OPCODESHIFT
#define OPCODESHIFT(op, ...) \
template <field_shift shift> \
void dppc_interpreter::ppc_##op(uint32_t instr) { \
__VA_ARGS__ \
}
#undef OPCODESHIFTREC
#define OPCODESHIFTREC(op, ...) \
template <field_direction isleft, field_rc rec > \
void dppc_interpreter::ppc_##op(uint32_t instr) { \
__VA_ARGS__ \
}
#undef OPCODECARRY
#define OPCODECARRY(op, ...) \
template <field_carry carry, field_rc rec, field_ov ov> \
void dppc_interpreter::ppc_##op(uint32_t instr) { \
__VA_ARGS__ \
}
#undef OPCODEOVREC
#define OPCODEOVREC(op, ...) \
template <field_rc rec, field_ov ov> \
void dppc_interpreter::ppc_##op(uint32_t instr) { \
__VA_ARGS__ \
}
#undef OPCODEEXTSIGN
#define OPCODEEXTSIGN(op, ...)\
template <class T, field_rc rec>\
void dppc_interpreter::ppc_##op(uint32_t instr) {\
__VA_ARGS__ \
}
#undef POWEROPCODEOVREC
#define POWEROPCODEOVREC(op, ...) \
template <field_rc rec, field_ov ov> \
void dppc_interpreter::power_##op(uint32_t instr) { \
__VA_ARGS__ \
}
#undef OPCODEREC
#define OPCODEREC(op, ...) \
template <field_rc rec> \
void dppc_interpreter::ppc_##op(uint32_t instr) { \
__VA_ARGS__ \
}
#undef POWEROPCODEREC
#define POWEROPCODEREC(op, ...) \
template <field_rc rec> \
void dppc_interpreter::power_##op(uint32_t instr) { \
__VA_ARGS__ \
}
#undef OPCODELOGIC
#define OPCODELOGIC(op, ...) \
template <logical_fun logical_op, field_rc rec> \
void dppc_interpreter::ppc_##op(uint32_t instr) { \
__VA_ARGS__ \
}
#undef OPCODELKAA
#define OPCODELKAA(op, ...) \
template <field_lk l, field_aa a> \
void dppc_interpreter::ppc_##op(uint32_t instr) { \
__VA_ARGS__ \
}
#undef OPCODEMEM
#define OPCODEMEM(op, ...) \
template <class T> \
void dppc_interpreter::ppc_##op(uint32_t instr) { \
__VA_ARGS__ \
}
#undef OPCODE601REC
#define OPCODE601REC(op, ...) \
template <field_601 for601, field_rc rec> \
void dppc_interpreter::ppc_##op(uint32_t instr) { \
__VA_ARGS__ \
}
#undef OPCODE601L
#define OPCODE601L(op, ...) \
template <field_lk l, field_601 for601, field_rc rec> \
void dppc_interpreter::ppc_##op(uint32_t instr) { \
__VA_ARGS__ \
}
#undef OPCODEL
#define OPCODEL(op, ...) \
template <field_lk l, field_601 for601, field_rc rec> \
void dppc_interpreter::ppc_##op(uint32_t instr) { \