Repository navigation
feat(libc): implement signed 64-bit minimum - #11300
Conversation
|
Some comparisons could not be completed because a pull request conflicts with the base branch. Review these shared files manually before concluding that there is no overlap.
|
|
Windows run of head AI-assisted: yes (Claude Code); results above were run on this machine. |
MarcZX10
left a comment
There was a problem hiding this comment.
The implementation and edge coverage look sound from the submitted diff. The branch is 148 commits behind current main; both Api.hpp and docs/dev/debt/libc.md changed after its merge base. Although the merge preview is clean and the reported Windows/WSL and combined-helper runs are useful, the contribution rules require branches to be based on and kept up to date with main. Please rebase onto current main and rerun the focused guest_vector_algorithms and public_headers checks on the resulting head before this is approved.
MarcZX10
left a comment
There was a problem hiding this comment.
I refreshed the exact-head sync check against current upstream/main 204c6747d0a1cbaf932def3dea0778810cc3935e: this head is 1 ahead / 245 behind. The merge preview is clean, but Api.hpp and docs/dev/debt/libc.md changed on main since this branch’s base (#9269, #10354 and #10608); keep those declarations and debt entries when rebasing. The Windows/WSL and combined-helper results in the PR are useful but were run on an older base. Please rebase and rerun guest_vector_algorithms and public_headers on the resulting exact head. No new function-specific defect found.
cd8f897 to
acf7780
Compare
acf7780 to
80bc31b
Compare
Dismissing a stale review: the requested changes were addressed after it (new head) and the merge queue blocks on it. Please request changes again if anything is still open.
|
Checked the diff against the existing |
What
Add the missing libc export
__std_min_8i(HWeZH0iNZU8): take a nonempty range of signed 64-bit elements and return the minimum value. The existingmemcpyread helper accepts unaligned ranges and leaves input unchanged. Declare the export once in the publicApi.hpp; tests use that header. Null, empty, reversed and partial-element ranges callNotImplemented_nid_no_patch; their native failure behavior remains unimplemented and is recorded in debt. Tests cover valid ranges without asserting those unsupported paths.The contract comes from PPSA03671 v01.001.005's bundled
libc.prx: RVA0x62830, size0x1f4, ELF SHA256483961e086b8a1fffa8138b3c0badf798987fb5f35ec908d828946408be2d8a6. The original receives range pointers inrdi/rsi, reads 8-byte elements, compares them as signed values (vpcmpgtqat0x62879,cmovl %rcx,%raxat0x62a16) and returns the value inrax. It has no calls or image-relative data references. The isolated original function was also run directly on this Windows host from its mapped load segments, without relocations, module initialization or other module exports. This is a host differential, not a console measurement. Microsoft STL's public implementation independently corroborates the signed 64-bit value-returning signature. Implementation is a generic scalar scan written from this contract.Before implementation, main and all 1,388 open PR heads were scanned for the function name and raw NID: no matches. No third-party code, module bytes or title files are added. No current title dependency, title unblock or performance improvement is claimed.
Tested
Current-main synchronization (27 October 2026). Exact tested/published head:
80bc31bb6c6828bfa6b4e9e90f29575f3d55411c. Main base:cb45ae2ddf6e113a4619e8fed91fe7b9333c5c0f.acf7780c57456890746f2ba23de407aa21d5c21donto the two newer main commits. Main changed only thewindows_crash_stack_wordstest regex incore/libs/prx/libc/CMakeLists.txt(fix(main): windows_crash_stack_words regex crossed by '~' in register dump #11633). The entire four-file contribution patch is byte-identical before and after the rebase; no implementation or regression assertion changed.guest_vector_algorithms_testsin the existing full-project Release configurations.guest_vector_algorithmsandpublic_headerspass 2/2 on Windows 11 / WinLibs GCC 15.2.0 and 2/2 on Ubuntu 24.04 WSL / GCC 13.3.0.7da0577e45f238c6bfa01a818bd7e27f727ebeffalso builds and passes both focused tests on Windows and Ubuntu. This synchronization ran 32 focused checks in total across the seven individual heads and the combined head.a27d73c1f43135378c54ed6477af71273135ec42; only the unrelated upstream CMake regex differs. The previous original-module differential, standalone-header and AddressSanitizer evidence below retains its stated revisions and was not rerun for this synchronization.Earlier implementation validation and provenance
Current-main refresh (27 October 2026). Exact tested/published head:
acf7780c57456890746f2ba23de407aa21d5c21d. Fetched main base:74acfad65b3f0fd4eab653f3a3989d298fba1157.cd8f897c707297017ea56922a6e897c3ed6214ef. The__std_min_8iproduction body is byte-identical to that head. Every existing main declaration and debt entry is preserved; the patch still changes only the implementation, public declaration, regression cases and debt entry.guest_vector_algorithms_tests;ctest --test-dir build -R "^(guest_vector_algorithms|public_headers)$" -V --output-on-failurepassed 2/2 on this exact head (19.55 s).a27d73c1f43135378c54ed6477af71273135ec42also builds and passes both focused checks on Windows and Ubuntu.92db947130efc9e7e12c492683329f2ebc3e1996merges cleanly with the main base, each individual helper and the seven-helper composition. This is a content-merge check for feat(libc): implement _Thrd_lt #10788; its implementation was not part of the combined runtime run.tools/check_main_sync.py --base origin/main --head acf7780c57456890746f2ba23de407aa21d5c21d --strictpass. The sync check is one ahead and zero behind the fetched main base above. Bundled dependencies use that base's pinned revisions; no contribution dependency was introduced.public_headersaudits unique declarations and umbrella coverage. Its current upstream 90-second timeout is unchanged. The full set of 64 standalone-header batches and the full CTest suite were not run; the targeted header checks below were added afterward.Additional validation on 27 October 2026, combined revision
a27d73c1f43135378c54ed6477af71273135ec42(the same seven-helper composition described above):include/Api.hpp,include/exceptions/Runtime.hpp,include/exceptions/Unwind.hpp,include/SonyCrt.hpp, andlibc.hpp), plus a compilation unit including all 368 library umbrellas together, pass with C++20 and-Werroron Windows/WinLibs GCC 15.2.0 and Ubuntu/GCC 13.3.0. Every header is included twice, and the existing checker also rejects third-party header dependencies: 6 compilation units per platform, all pass. This is targeted coverage, not the full 64-batch matrix.ANYPS5_ENABLE_ASAN=ON, RelWithDebInfo, rebuilt libc andguest_vector_algorithms_tests.ASAN_OPTIONS=halt_on_error=1:detect_leaks=1 ctest --test-dir build-asan-libc-followup-20261027-a -R '^guest_vector_algorithms$' -V --output-on-failurepassed 1/1, with no AddressSanitizer or LeakSanitizer finding.The earlier differential and negative-control results below belong to their stated heads. The original-module differential was not rerun for this refresh. No console, title or GPU execution and no performance claim.
Earlier implementation validation and provenance
Current-main refresh (26 October 2026), exact published/tested head
cd8f897c707297017ea56922a6e897c3ed6214ef, main basebf77a9e9cba4b02c358779b35295176dd9cae164:365e892c73c65e042c82e57fbed626e1b2a1f530onto the main base above. All existing main declarations and debt entries are retained. The__std_min_8iproduction function body is byte-identical to the previously reviewed head; the patch still changes only its implementation, public declaration, regression cases and debt entry.guest_vector_algorithms_tests;ctest --test-dir build -R "^(guest_vector_algorithms|public_headers)$" -V --output-on-failurepassed 2/2 on this exact head (19.11 s).public_headersis the unique-declaration and umbrella-coverage audit; standalone-header compilation batches and the full CTest suite were not run in this refresh.tools/check_conventions.py --base origin/main, PR-diff whitespace checks andtools/check_main_sync.py --base origin/main --head cd8f897c707297017ea56922a6e897c3ed6214ef --strictpass. The sync check reports one commit ahead and zero behind the fetched main base above.The previous baseline, differential and negative-control evidence below belongs to the earlier heads stated there. The original-module comparison was not rerun for this rebase-only refresh, and no console measurement was made.
Earlier implementation validation and provenance
Base:
5b85225ef39b9321d8f5c251ecb391b8331e8aea. Published/tested head:365e892c73c65e042c82e57fbed626e1b2a1f530.BUILD_TESTING=ON, full-project configuration: productionlibs,relinkerandguest_vector_algorithms_testsbuild. Bothguest_vector_algorithmsandpublic_headerspass withctest --test-dir build -R "^(guest_vector_algorithms|public_headers)$" -V --output-on-failure. The differential is repeated against the final NID-patched production library.guest_vector_algorithmsandpublic_headerspass on unmodified base5b85225ef3. Added cases cover single values, all pairs of twelve signed edge values, negative/zero/positive and 32/64-bit boundaries, 20 lengths through 257 elements, offsets 0–31, unchanged input/canaries, repeated negative minima, all-maximum ranges and a unique wide negative minimum at every position.INT64_MIN/INT64_MAXand all 144 pairs of twelve edge values. Inputs remain unchanged.Overlap: the required
tools/pr_overlap.py --branch feat/libc-signed-min64 --repo boykopovar/AnyPS5run against5b85225ef39b9321d8f5c251ecb391b8331e8aeareports no confirmed overlap. Manually inspected all 37 stale shared-file patches against their merge bases: #5021, #5303, #6713, #7081, #7386, #7447, #7544, #7648, #7715, #8150, #8417, #9087, #9269, #9371, #9447, #9526, #9669, #9771, #9863, #9873, #9929, #10007, #10113, #10158, #10200, #10222, #10226, #10229, #10283, #10346, #10349, #10405, #10467, #10610, #10742, #10788, #10898. They change other debt entries and unrelated public exports; none changes this function or its neighboring vector declarations/debt entry. Those stale branches are not claimed merge-clean. Trial merges with our independent #10460, #11289 and #11295 all succeed without content conflicts; no dependency on them.Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file.mdfiles or images added to the repository (attach them to this PR)