From 56314854653165faa09c8265d38bf7d50c8be15f Mon Sep 17 00:00:00 2001 From: dingusdev <52434309+dingusdev@users.noreply.github.com> Date: Sun, 24 Mar 2024 14:06:07 -0700 Subject: [PATCH] Cleaning up templating --- cpu/ppc/ppcemu.h | 4 ++-- cpu/ppc/ppcexec.cpp | 43 ++++++++++++++++++++-------------------- cpu/ppc/ppcfpopcodes.cpp | 28 +++++++++++++------------- cpu/ppc/ppcopcodes.cpp | 32 +++++++++++------------------- 4 files changed, 50 insertions(+), 57 deletions(-) diff --git a/cpu/ppc/ppcemu.h b/cpu/ppc/ppcemu.h index a9b1d6c..6939d54 100644 --- a/cpu/ppc/ppcemu.h +++ b/cpu/ppc/ppcemu.h @@ -405,8 +405,8 @@ enum field_setting { LK1 = 1, AA0 = 0, AA1 = 1, - LSHFT = 0, - RSHFT = 1, + SHFT0 = 0, + SHFT1 = 1, RC0 = 0, RC1 = 1, OV0 = 0, diff --git a/cpu/ppc/ppcexec.cpp b/cpu/ppc/ppcexec.cpp index ec0e6c6..9704a05 100644 --- a/cpu/ppc/ppcexec.cpp +++ b/cpu/ppc/ppcexec.cpp @@ -134,17 +134,18 @@ public: /** Opcode lookup tables. */ /** Primary opcode (bits 0...5) lookup table. */ -static PPCOpcode OpcodeGrabber[] = { + static PPCOpcode OpcodeGrabber[] = { ppc_illegalop, ppc_illegalop, ppc_illegalop, ppc_twi, ppc_illegalop, ppc_illegalop, ppc_illegalop, ppc_mulli, ppc_subfic, power_dozi, ppc_cmpli, ppc_cmpi, - ppc_addic, ppc_addic, - ppc_addi, ppc_addi, - ppc_opcode16, ppc_sc, ppc_opcode18, ppc_opcode19, + ppc_addic, ppc_addic, + ppc_addi, ppc_addi, + ppc_opcode16, ppc_sc, + ppc_opcode18, ppc_opcode19, ppc_rlwimi, ppc_rlwinm, power_rlmi, ppc_rlwnm, - ppc_ori, ppc_ori, - ppc_xori, ppc_xori, - ppc_andirc, ppc_andirc, + ppc_ori, ppc_ori, + ppc_xori, ppc_xori, + ppc_andirc, ppc_andirc, ppc_illegalop, ppc_opcode31, ppc_lz, ppc_lzu, ppc_lz, ppc_lzu, @@ -161,17 +162,17 @@ static PPCOpcode OpcodeGrabber[] = { }; /** Lookup tables for branch instructions. */ -static PPCOpcode SubOpcode16Grabber[] = { - dppc_interpreter::ppc_bc, //bc - dppc_interpreter::ppc_bc, //bcl - dppc_interpreter::ppc_bc, //bca - dppc_interpreter::ppc_bc}; //bcla +const static PPCOpcode SubOpcode16Grabber[] = { + dppc_interpreter::ppc_bc, // bc + dppc_interpreter::ppc_bc, // bcl + dppc_interpreter::ppc_bc, // bca + dppc_interpreter::ppc_bc}; // bcla -static PPCOpcode SubOpcode18Grabber[] = { - dppc_interpreter::ppc_b, //b - dppc_interpreter::ppc_b, //bl - dppc_interpreter::ppc_b, //ba - dppc_interpreter::ppc_b}; //bla +const static PPCOpcode SubOpcode18Grabber[] = { + dppc_interpreter::ppc_b, // b + dppc_interpreter::ppc_b, // bl + dppc_interpreter::ppc_b, // ba + dppc_interpreter::ppc_b}; // bla /** Instructions decoding tables for integer, single floating-point, and double-floating point ops respectively */ @@ -690,8 +691,8 @@ void initialize_ppc_opcode_tables() { SubOpcode31Grabber[620] = ppc_eciwx; SubOpcode31Grabber[876] = ppc_ecowx; - SubOpcode31Grabber[48] = ppc_shift; - SubOpcode31Grabber[49] = ppc_shift; + SubOpcode31Grabber[48] = ppc_shift; + SubOpcode31Grabber[49] = ppc_shift; SubOpcode31Grabber[56] = ppc_do_bool; SubOpcode31Grabber[57] = ppc_do_bool; SubOpcode31Grabber[120] = ppc_do_bool; @@ -706,8 +707,8 @@ void initialize_ppc_opcode_tables() { SubOpcode31Grabber[825] = ppc_do_bool; SubOpcode31Grabber[888] = ppc_do_bool; SubOpcode31Grabber[889] = ppc_do_bool; - SubOpcode31Grabber[1072] = ppc_shift; - SubOpcode31Grabber[1073] = ppc_shift; + SubOpcode31Grabber[1072] = ppc_shift; + SubOpcode31Grabber[1073] = ppc_shift; SubOpcode31Grabber[1584] = ppc_sraw; SubOpcode31Grabber[1585] = ppc_sraw; SubOpcode31Grabber[1648] = ppc_srawi; diff --git a/cpu/ppc/ppcfpopcodes.cpp b/cpu/ppc/ppcfpopcodes.cpp index bb36dcf..4c2a56f 100644 --- a/cpu/ppc/ppcfpopcodes.cpp +++ b/cpu/ppc/ppcfpopcodes.cpp @@ -886,8 +886,8 @@ void dppc_interpreter::ppc_fmr() { ppc_update_cr1(); } -template void dppc_interpreter::ppc_fmr(); -template void dppc_interpreter::ppc_fmr(); +template void dppc_interpreter::ppc_fmr(); +template void dppc_interpreter::ppc_fmr(); template void dppc_interpreter::ppc_mffs() { @@ -899,10 +899,10 @@ void dppc_interpreter::ppc_mffs() { ppc_update_cr1(); } -template void dppc_interpreter::ppc_mffs(); -template void dppc_interpreter::ppc_mffs(); -template void dppc_interpreter::ppc_mffs(); -template void dppc_interpreter::ppc_mffs(); +template void dppc_interpreter::ppc_mffs(); +template void dppc_interpreter::ppc_mffs(); +template void dppc_interpreter::ppc_mffs(); +template void dppc_interpreter::ppc_mffs(); template void dppc_interpreter::ppc_mtfsf() { @@ -934,8 +934,8 @@ void dppc_interpreter::ppc_mtfsf() { ppc_update_cr1(); } -template void dppc_interpreter::ppc_mtfsf(); -template void dppc_interpreter::ppc_mtfsf(); +template void dppc_interpreter::ppc_mtfsf(); +template void dppc_interpreter::ppc_mtfsf(); template void dppc_interpreter::ppc_mtfsfi() { @@ -954,8 +954,8 @@ void dppc_interpreter::ppc_mtfsfi() { ppc_update_cr1(); } -template void dppc_interpreter::ppc_mtfsfi(); -template void dppc_interpreter::ppc_mtfsfi(); +template void dppc_interpreter::ppc_mtfsfi(); +template void dppc_interpreter::ppc_mtfsfi(); template void dppc_interpreter::ppc_mtfsb0() { @@ -968,8 +968,8 @@ void dppc_interpreter::ppc_mtfsb0() { ppc_update_cr1(); } -template void dppc_interpreter::ppc_mtfsb0(); -template void dppc_interpreter::ppc_mtfsb0(); +template void dppc_interpreter::ppc_mtfsb0(); +template void dppc_interpreter::ppc_mtfsb0(); template void dppc_interpreter::ppc_mtfsb1() { @@ -982,8 +982,8 @@ void dppc_interpreter::ppc_mtfsb1() { ppc_update_cr1(); } -template void dppc_interpreter::ppc_mtfsb1(); -template void dppc_interpreter::ppc_mtfsb1(); +template void dppc_interpreter::ppc_mtfsb1(); +template void dppc_interpreter::ppc_mtfsb1(); void dppc_interpreter::ppc_mcrfs() { int crf_d = (ppc_cur_instruction >> 21) & 0x1C; diff --git a/cpu/ppc/ppcopcodes.cpp b/cpu/ppc/ppcopcodes.cpp index 0000a9c..1d27906 100644 --- a/cpu/ppc/ppcopcodes.cpp +++ b/cpu/ppc/ppcopcodes.cpp @@ -107,8 +107,8 @@ void dppc_interpreter::ppc_addi() { ppc_state.gpr[reg_d] = (reg_a == 0) ? simm : (ppc_result_a + simm); } -template void dppc_interpreter::ppc_addi(); -template void dppc_interpreter::ppc_addi(); +template void dppc_interpreter::ppc_addi(); +template void dppc_interpreter::ppc_addi(); template void dppc_interpreter::ppc_addic() { @@ -344,8 +344,8 @@ void dppc_interpreter::ppc_andirc() { ppc_store_iresult_reg(reg_a, ppc_result_a); } -template void dppc_interpreter::ppc_andirc(); -template void dppc_interpreter::ppc_andirc(); +template void dppc_interpreter::ppc_andirc(); +template void dppc_interpreter::ppc_andirc(); template void dppc_interpreter::ppc_ori() { @@ -354,8 +354,8 @@ void dppc_interpreter::ppc_ori() { ppc_store_iresult_reg(reg_a, ppc_result_a); } -template void dppc_interpreter::ppc_ori(); -template void dppc_interpreter::ppc_ori(); +template void dppc_interpreter::ppc_ori(); +template void dppc_interpreter::ppc_ori(); template void dppc_interpreter::ppc_xori() { @@ -364,8 +364,8 @@ void dppc_interpreter::ppc_xori() { ppc_store_iresult_reg(reg_a, ppc_result_a); } -template void dppc_interpreter::ppc_xori(); -template void dppc_interpreter::ppc_xori(); +template void dppc_interpreter::ppc_xori(); +template void dppc_interpreter::ppc_xori(); template void dppc_interpreter::ppc_do_bool() { @@ -612,10 +612,10 @@ void dppc_interpreter::ppc_shift() { ppc_store_iresult_reg(reg_a, ppc_result_a); } -template void dppc_interpreter::ppc_shift(); -template void dppc_interpreter::ppc_shift(); -template void dppc_interpreter::ppc_shift(); -template void dppc_interpreter::ppc_shift(); +template void dppc_interpreter::ppc_shift(); +template void dppc_interpreter::ppc_shift(); +template void dppc_interpreter::ppc_shift(); +template void dppc_interpreter::ppc_shift(); template void dppc_interpreter::ppc_sraw() { @@ -1386,12 +1386,10 @@ void dppc_interpreter::ppc_sync() { void dppc_interpreter::ppc_icbi() { /* placeholder */ - ppc_illegalop(); } void dppc_interpreter::ppc_dcbf() { /* placeholder */ - ppc_illegalop(); } void dppc_interpreter::ppc_dcbi() { @@ -1399,12 +1397,10 @@ void dppc_interpreter::ppc_dcbi() { num_supervisor_instrs++; #endif /* placeholder */ - ppc_illegalop(); } void dppc_interpreter::ppc_dcbst() { /* placeholder */ - ppc_illegalop(); } void dppc_interpreter::ppc_dcbt() { @@ -1937,7 +1933,6 @@ void dppc_interpreter::ppc_tlbia() { num_supervisor_instrs++; #endif /* placeholder */ - ppc_illegalop(); } void dppc_interpreter::ppc_tlbld() { @@ -1945,7 +1940,6 @@ void dppc_interpreter::ppc_tlbld() { num_supervisor_instrs++; #endif /* placeholder */ - ppc_illegalop(); } void dppc_interpreter::ppc_tlbli() { @@ -1953,7 +1947,6 @@ void dppc_interpreter::ppc_tlbli() { num_supervisor_instrs++; #endif /* placeholder */ - ppc_illegalop(); } void dppc_interpreter::ppc_tlbsync() { @@ -1961,5 +1954,4 @@ void dppc_interpreter::ppc_tlbsync() { num_supervisor_instrs++; #endif /* placeholder */ - ppc_illegalop(); }