#7018 reads the low-half factors of v_mul_lo_u16 and v_pk_mul_lo_u16
as 24-bit fields because AMD's Windows driver stores the full 32-bit
product when it knows both factors fit in 16 bits. #7673's fold of
BitFieldUExtract(x, 0, n) into x removed those reads when the program
had masked the factors to 16 bits, so agc_driver_mul_lo_u16_high_half
failed again on that driver. The folder now keeps a field read that a
multiply uses.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
On a device whose target reports no f64 DenormPreserve, the f64
rounding and add/mul denormal mode tests skipped every mismatch in the
modes that keep f64 denormal inputs (1, 3 and no known float mode) and
checked modes 0 and 2 strictly. A recompiler regression in modes 1 and
3 never failed there, such as dropping the v_fract_f64 result flush
that only mode 1 shows, while mode 2 failed where a driver may flush a
denormal result of normal inputs (v_add_f64 and v_mul_f64 rows 4, 9,
11 and 15).
A result is now skipped only when its expected value changes if the
device flushes f64 denormal inputs, results or both, and only until the
device shows that it keeps them: when the run without a known float
mode, which uses the native instructions, matches every row, the other
modes are checked strictly.
Co-Authored-By: Claude <[email protected]>
runLargeFileWrite writes a 2 GiB pipelines.bin into a randomly named
temporary directory, and only the passing path removed it. A failing
require after the write and the 200 s hang limit (std::_Exit) left the
file behind, and the two skips left the empty directory. A local Cleanup
now removes the directory when the function returns or throws, and the
hang path removes it before std::_Exit and prints the error when it
cannot, as on Windows while the write still holds the file open.
Co-Authored-By: Claude <[email protected]>
agc_spirv_subvector_loop_begin recompiles the exec-kept program of
agc_driver_subvector_loop at wave64 in both robustBufferAccess2 modes and
requires exactly one branch on (exec_lo | exec_hi) == 0 and none on
exec_lo == 0 && exec_hi == 0. It needs no GPU, so CI fails if the begin
instruction goes back to two compares. The program moves to
SubvectorLoopFixture.hpp so both tests use one copy.
Co-Authored-By: Claude <[email protected]>
Report the host IPv4 DNS servers of the interface sceNetCtlGetInfo
uses, through a helper libSceNetCtl exports, and return their count.
The signature and layout follow the OpenOrbis musl resolver and Net.h.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The blocked-destination case checks a different file, so an in-place
rewrite passed it. The earlier case is back beside it: a directory at
<name>.tmp makes the write fail, and the previous aps5-bench.json.gz must
be unchanged. It is left out of Windows builds, where the
std::ios_base::failure thrown inside the MinGW ofstream did not unwind to
the test's catch.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
With APS5_PROFILE_DRAW, every dispatch that misses because its captured
SRT words differ copies the entry's runs and words into a ring of the
last three value sets per dispatch key, for up to 16384 keys. The ring
only answers whether a new value set equals one of them, so it now keeps
a 64-bit hash of each set instead of a copy.
Ghost of Tsushima captures SRT words of more than 1 MiB per compute
dispatch, and a profiled run held 352 MiB of these copies 274 s in.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The forbidden-syscall error carried no input path, so the conversion's
catch filled in the main executable's path even when the instruction
was in a guest module. The scanner already receives the scanned file's
path; put it in the exception.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
No handle is ever open, as sceHmdOpen reports the headset disconnected, so they return HANDLE_INVALID after initialization and NOT_INITIALIZED before it, without writing their outputs.
The handle calls and sceMoveClose threw for a handle never opened, already closed or opened before sceMoveTerm; they now return 0x80EE0004, checked before the other arguments.
sceHttpSetDefaultAcceptEncodingGZIPEnabled sets the value templates of that context start with; sceHttpSetAcceptEncodingGZIPEnabled and sceHttpGetAcceptEncodingGZIPEnabled set and read it per object.