diff --git a/Source/Core/Core/Src/PowerPC/JitArm32/Jit.h b/Source/Core/Core/Src/PowerPC/JitArm32/Jit.h index 73320c0b30..b46c009623 100644 --- a/Source/Core/Core/Src/PowerPC/JitArm32/Jit.h +++ b/Source/Core/Core/Src/PowerPC/JitArm32/Jit.h @@ -222,6 +222,7 @@ public: // Paired Singles void ps_add(UGeckoInstruction _inst); + void ps_div(UGeckoInstruction _inst); void ps_sum0(UGeckoInstruction _inst); void ps_sum1(UGeckoInstruction _inst); void ps_madd(UGeckoInstruction _inst); diff --git a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_Paired.cpp b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_Paired.cpp index 983e788707..33e3a19780 100644 --- a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_Paired.cpp +++ b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_Paired.cpp @@ -149,6 +149,26 @@ void JitArm::ps_add(UGeckoInstruction inst) VADD(vD1, vA1, vB1); } +void JitArm::ps_div(UGeckoInstruction inst) +{ + INSTRUCTION_START + JITDISABLE(bJITPairedOff) + + u32 a = inst.FA, b = inst.FB, d = inst.FD; + if (inst.Rc){ + Default(inst); return; + } + ARMReg vA0 = fpr.R0(a); + ARMReg vA1 = fpr.R1(a); + ARMReg vB0 = fpr.R0(b); + ARMReg vB1 = fpr.R1(b); + ARMReg vD0 = fpr.R0(d, false); + ARMReg vD1 = fpr.R1(d, false); + + VDIV(vD0, vA0, vB0); + VDIV(vD1, vA1, vB1); +} + void JitArm::ps_nmadd(UGeckoInstruction inst) { INSTRUCTION_START diff --git a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_Tables.cpp b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_Tables.cpp index 3f24a581c6..79e70c38c6 100644 --- a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_Tables.cpp +++ b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_Tables.cpp @@ -149,7 +149,7 @@ static GekkoOPTemplate table4_2[] = {13, &JitArm::ps_muls1}, //"ps_muls1", OPTYPE_PS, 0}}, {14, &JitArm::ps_madds0}, //"ps_madds0", OPTYPE_PS, 0}}, {15, &JitArm::ps_madds1}, //"ps_madds1", OPTYPE_PS, 0}}, - {18, &JitArm::Default}, //"ps_div", OPTYPE_PS, 0, 16}}, + {18, &JitArm::ps_div}, //"ps_div", OPTYPE_PS, 0, 16}}, {20, &JitArm::ps_sub}, //"ps_sub", OPTYPE_PS, 0}}, {21, &JitArm::ps_add}, //"ps_add", OPTYPE_PS, 0}}, {23, &JitArm::ps_sel}, //"ps_sel", OPTYPE_PS, 0}},