From 8cd241ca10248786158acade0f7a0bcb725bc7e2 Mon Sep 17 00:00:00 2001 From: kd-11 Date: Sun, 7 Dec 2025 23:18:47 +0300 Subject: [PATCH] rsx/fp: Implement OR16_LO and OR16_HI instructions --- rpcs3/Emu/RSX/Program/FragmentProgramDecompiler.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/rpcs3/Emu/RSX/Program/FragmentProgramDecompiler.cpp b/rpcs3/Emu/RSX/Program/FragmentProgramDecompiler.cpp index c8b6156065..73e907130e 100644 --- a/rpcs3/Emu/RSX/Program/FragmentProgramDecompiler.cpp +++ b/rpcs3/Emu/RSX/Program/FragmentProgramDecompiler.cpp @@ -1116,6 +1116,14 @@ bool FragmentProgramDecompiler::handle_sct_scb(u32 opcode) return true; case RSX_FP_OPCODE_PKB: SetDst(getFloatTypeName(4) + "(uintBitsToFloat(packUnorm4x8($0)))"); return true; case RSX_FP_OPCODE_SIN: SetDst("sin($0.xxxx)"); return true; + + // Custom ISA extensions for 16-bit OR + case RSX_FP_OPCODE_OR16_HI: + SetDst("$float4(uintBitsToFloat((floatBitsToUint($0.x) & 0x0000ffff) | (packHalf2x16($1.xx) & 0xffff0000)))"); + return true; + case RSX_FP_OPCODE_OR16_LO: + SetDst("$float4(uintBitsToFloat((floatBitsToUint($0.x) & 0xffff0000) | (packHalf2x16($1.xx) & 0x0000ffff)))"); + return true; } return false; }