The 2D-array comparison results were measured with LESSEQUAL only. A
second gfx1036 run over all eight DEPTH_COMPARE_FUNC values (128
kernels) gives the same: a 2D-array address on a 2D T# ignores the
slice, and codes 1 and 56 return 0 under every function. Both entries
now say so.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
A comparison or plain sample with a 2D-array address on a 2D T#
returns what the same sample with a 2D address returns, whatever the
slice, as measured with the hardware oracle on RDNA2 (gfx1036) for
formats 1, 7, 22 and 56 with point and bilinear filtering, while a
four-layer 2D-array T# over the same memory returns a different result
per slice. Codes 1 and 56 also compare to 0 with 2D-array addresses.
The three comparison debt entries keep gfx1013, cube comparisons and
the other formats' array comparisons as open.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Buffer resources and MIMG samplers at register field 26 read s104,
s105, vcc_lo and vcc_hi, as measured with the hardware oracle on RDNA2
(gfx1036) in wave32 and wave64 with raw encodings, which LLVM's
assembler refuses. Loads, format conversion, bounds and stores through
the buffer tuple, and sampling through the sampler tuple, act as the
same words in ordinary SGPRs do, and a change to each of the four
words shows in the result. Both debt entries now keep gfx1013 as open.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
A scalar buffer load through a V# read at run time recorded an
InvalidDescriptor fault when TYPE (word 3, bits 30-31) was nonzero, and
the dispatch wrote nothing. Measured with the hardware oracle on RDNA2
(gfx1036), s_buffer_load ignores the whole fourth word: OOB_SELECT,
TYPE, FORMAT, ADD_TID_ENABLE, INDEX_STRIDE, RESOURCE_LEVEL and DST_SEL
change no result, so the scalar path no longer checks TYPE. Vector
accesses keep the check. The debt entry now records the measurement
and keeps gfx1013 and a null base as open.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The wide printf family left NaN to the host, which dropped the sign of a
negative NaN but printed +nan with the + flag. The libc.prx that titles
ship prints a NaN in swprintf like an infinity, as its snprintf does:
-nan for a negative NaN, +nan or " nan" with the + and space flags, NAN
for the upper-case conversions, padded with spaces. The wide formatter now
does the same through its own helper; the narrow family is #10223's.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
pthread_mutex_trylock returns an errno value, unlike the Sce function it
wraps, and had no test. Check the FreeBSD 11.4 results of
__pthread_mutex_trylock and mutex_self_trylock (lib/libthr/thread/thr_mutex.c
lines 611-640 and 850-873): a free or statically initialised mutex returns 0,
a mutex held by the caller returns EBUSY for the error-checking and normal
types and 0 for the recursive type, and a mutex held by another thread returns
EBUSY.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>