From 73b75e197a6b9e8c1ad693f926c044d0f8f23a0b Mon Sep 17 00:00:00 2001 From: Skyth <19259897+blueskythlikesclouds@users.noreply.github.com> Date: Thu, 23 Jan 2025 14:35:46 +0300 Subject: [PATCH] Use __builtin_clz instead of __lzcnt32 for cntlzw instruction. --- XenonRecomp/recompiler.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/XenonRecomp/recompiler.cpp b/XenonRecomp/recompiler.cpp index 04d8dae..1a18cfb 100644 --- a/XenonRecomp/recompiler.cpp +++ b/XenonRecomp/recompiler.cpp @@ -688,11 +688,11 @@ bool Recompiler::Recompile( break; case PPC_INST_CNTLZD: - println("\t{}.u64 = __lzcnt64({}.u64);", r(insn.operands[0]), r(insn.operands[1])); + println("\t{0}.u64 = {1}.u64 == 0 ? 64 : __builtin_clzll({1}.u64);", r(insn.operands[0]), r(insn.operands[1])); break; case PPC_INST_CNTLZW: - println("\t{}.u64 = __lzcnt32({}.u32);", r(insn.operands[0]), r(insn.operands[1])); + println("\t{0}.u64 = {1}.u32 == 0 ? 32 : __builtin_clz({1}.u32);", r(insn.operands[0]), r(insn.operands[1])); break; case PPC_INST_DB16CYC: