SIGN IN SIGN UP
shadps4-emu / shadPS4 UNCLAIMED

PlayStation 4 emulator for Windows, Linux, macOS and FreeBSD written in C++

MIP fixes (#4141)

* int32-modifiers

GCN VOP3 abs/neg modifier bits always operate on the sign bit (bit 31)
regardless of instruction type. For integer operands this means:
	
abs = clear bit 31   (x & 0x7FFFFFFF)
neg = toggle bit 31  (x ^ 0x80000000)

* int64-modifiers

Previously GetSrc64<IR::U64> completely ignored input modifiers
for integer operands. Now unpacks to two U32s, modifies the high
dword's bit 31 (= bit 63 of the 64-bit value), and repacks.

* V_MUL_LEGACY_F32

GCN V_MUL_LEGACY_F32: if either source is zero, result is +0.0
regardless of the other operand (even NaN or Inf). Standard IEEE
multiply produces NaN for 0*Inf. The fix adds a zero-check select
before the multiply.
K
Kravickas committed
2ca342970a8c5f0a03ae026cb9004d6a49794b75
Parent: 9a3e7b0
Committed by GitHub <[email protected]> on 3/18/2026, 8:05:20 AM