From 0b4c87071b33d30dfc392dae54bff2856dc0d780 Mon Sep 17 00:00:00 2001 From: CRACKbomber <1568512+CRACKbomber@users.noreply.github.com> Date: Fri, 23 May 2025 19:26:02 -0400 Subject: [PATCH] Implement vpkuhus/vpkuhus128 --- XenonRecomp/recompiler.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/XenonRecomp/recompiler.cpp b/XenonRecomp/recompiler.cpp index d50a1f2..27f1a3e 100644 --- a/XenonRecomp/recompiler.cpp +++ b/XenonRecomp/recompiler.cpp @@ -2378,6 +2378,13 @@ bool Recompiler::Recompile( v(insn.operands[0]), v(insn.operands[2]), v(insn.operands[1])); break; + case PPC_INST_VPKUHUS: + case PPC_INST_VPKUHUS128: + // Pack unsigned halfwords to unsigned bytes with saturation + println("\t_mm_store_si128((__m128i*){}.u8, _mm_packus_epi16(_mm_load_si128((__m128i*){}.u16), _mm_load_si128((__m128i*){}.u16)));", + v(insn.operands[0]), v(insn.operands[2]), v(insn.operands[1])); + break; + case PPC_INST_VPKUWUM: case PPC_INST_VPKUWUM128: println("\t_mm_store_si128((__m128i*){}.u32, _mm_load_si128((__m128i*){}.u32));", vTemp(), v(insn.operands[2]));