From 0bf4d365321ece6b31d4a28dabab2a548d5fb2b1 Mon Sep 17 00:00:00 2001 From: CRACKbomber <1568512+CRACKbomber@users.noreply.github.com> Date: Fri, 27 Jun 2025 18:06:22 -0400 Subject: [PATCH] Implement frsqrte - Needs to be optimized but it should work for now --- XenonRecomp/recompiler.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/XenonRecomp/recompiler.cpp b/XenonRecomp/recompiler.cpp index 0bc5e52..2902687 100644 --- a/XenonRecomp/recompiler.cpp +++ b/XenonRecomp/recompiler.cpp @@ -1020,6 +1020,12 @@ bool Recompiler::Recompile( println("\t{}.f64 = {}.f64 >= 0.0 ? {}.f64 : {}.f64;", f(insn.operands[0]), f(insn.operands[1]), f(insn.operands[2]), f(insn.operands[3])); break; + case PPC_INST_FRSQRTE: + // TODO(crack): I sure hope the c++ optimizer can optimize this. Fixme with some simd magic later + printSetFlushMode(false); + println("\t{}.f64 = double(1.0f / sqrtf(float({}.f64)));", f(insn.operands[0]), f(insn.operands[1])); + break; + case PPC_INST_FSQRT: printSetFlushMode(false); println("\t{}.f64 = sqrt({}.f64);", f(insn.operands[0]), f(insn.operands[1]));