ppcfpopcodes: Template mffs variants.
This commit is contained in:
parent
7b4d513e22
commit
e44676e491
|
@ -526,8 +526,7 @@ extern void ppc_mtfsb0();
|
|||
extern void ppc_mtfsb1();
|
||||
extern void ppc_mcrfs();
|
||||
extern void ppc_fmr();
|
||||
extern void ppc_mffs();
|
||||
extern void ppc_mffs_601();
|
||||
template <bool for601> extern void ppc_mffs();
|
||||
extern void ppc_mtfsf();
|
||||
extern void ppc_mtfsfi();
|
||||
|
||||
|
|
|
@ -730,7 +730,7 @@ void initialize_ppc_opcode_tables() {
|
|||
SubOpcode63Grabber[134] = ppc_mtfsfi;
|
||||
SubOpcode63Grabber[136] = ppc_fnabs;
|
||||
SubOpcode63Grabber[264] = ppc_fabs;
|
||||
SubOpcode63Grabber[583] = ppc_mffs;
|
||||
SubOpcode63Grabber[583] = ppc_mffs<false>;
|
||||
SubOpcode63Grabber[711] = ppc_mtfsf;
|
||||
|
||||
for (int i = 0; i < 1024; i += 32) {
|
||||
|
@ -766,12 +766,11 @@ void ppc_cpu_init(MemCtrlBase* mem_ctrl, uint32_t cpu_version, uint64_t tb_freq)
|
|||
SubOpcode31Grabber[370] = ppc_illegalop; // tlbia
|
||||
SubOpcode31Grabber[371] = ppc_illegalop; // mftb
|
||||
SubOpcode59Grabber[24] = ppc_illegalop; // fres
|
||||
SubOpcode63Grabber[26] = ppc_illegalop; // frsqrte
|
||||
SubOpcode63Grabber[583] = ppc_mffs<true>;
|
||||
for (int i = 0; i < 1024; i += 32) {
|
||||
SubOpcode63Grabber[i + 23] = ppc_illegalop; // fsel
|
||||
}
|
||||
SubOpcode63Grabber[26] = ppc_illegalop; // frsqrte;
|
||||
|
||||
SubOpcode63Grabber[583] = ppc_mffs_601;
|
||||
}
|
||||
if (cpu_version != PPC_VER::MPC970MP) {
|
||||
SubOpcode59Grabber[22] = ppc_illegalop; // fsqrts
|
||||
|
|
|
@ -846,23 +846,18 @@ void dppc_interpreter::ppc_fmr() {
|
|||
ppc_update_cr1();
|
||||
}
|
||||
|
||||
template <bool for601>
|
||||
void dppc_interpreter::ppc_mffs() {
|
||||
ppc_grab_regsda();
|
||||
|
||||
ppc_state.fpr[reg_d].int64_r = uint64_t(ppc_state.fpscr) | 0xFFF8000000000000ULL;
|
||||
ppc_state.fpr[reg_d].int64_r = uint64_t(ppc_state.fpscr) | (for601 ? 0xFFFFFFFF00000000ULL : 0xFFF8000000000000ULL);
|
||||
|
||||
if (rc_flag)
|
||||
ppc_update_cr1();
|
||||
}
|
||||
|
||||
void dppc_interpreter::ppc_mffs_601() {
|
||||
ppc_grab_regsda();
|
||||
|
||||
ppc_state.fpr[reg_d].int64_r = uint64_t(ppc_state.fpscr) | 0xFFFFFFFF00000000ULL;
|
||||
|
||||
if (rc_flag)
|
||||
ppc_update_cr1();
|
||||
}
|
||||
template void dppc_interpreter::ppc_mffs<false>();
|
||||
template void dppc_interpreter::ppc_mffs<true>();
|
||||
|
||||
void dppc_interpreter::ppc_mtfsf() {
|
||||
int reg_b = (ppc_cur_instruction >> 11) & 0x1F;
|
||||
|
|
Loading…
Reference in New Issue