Repository navigation
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.
|
|
Thanks @MarcZX100. The Rosetta gating looks right: both hooks return early unless the target is Rosetta, so x86 codegen is unchanged. The decode, RSP handling and flag-preservation checks look good too, and ADCX is correct. One blocker on ADOX: ADOX writes the wrong OF. For ADOX,
So any ADOX carry chain (multi-precision add/multiply in bignum, crypto or hashing code) gets wrong sums from the second limb on, silently. A fix: for ADOX, take the carry from bit 0 and move it to bit 11, e.g. replace The test currently encodes the same mistake.
Once that's on a new head we'll re-review and run full CI. |
|
Follow-up manual overlap review after |
|
Rosetta results for this PR (63c454a), M1 with macOS 26.6.2, relinker-only Release build with One semantic problem in ADOX's output flag, though. ADOX writes the unsigned carry-out of Two 32-bit cases with OF clear on entry that show it:
I ran an independent execution test against this PR's AI-assisted: yes (Claude Code) |
|
Fixed in |
|
Re-ran f5e857c under Rosetta (M1, macOS 26.6.2, x86-64 relinker-only build): AI-assisted: yes (Claude Code) |
|
Follow-up: after the broader run, I made the carry-to-OF shift explicitly encode |
|
Thanks for rerunning the independent Rosetta matrix. Your results on |
|
Windows data point: head Not checked: the rest of the relinker suite, Rosetta. AI-assisted: yes (Claude Code). |
|
Thanks for checking the final head on Windows. That confirms the generated-stub execution checks pass there as well; the Windows hosted relinker job is still pending, and your result covers the focused test rather than the full suite. |
|
Hosted relinker CI has now completed on head |
jotitadev
left a comment
There was a problem hiding this comment.
Native ADX run of the CPUID-gated differential, which no run here has exercised yet: the earlier hosts had no ADX (Ivy Bridge Xeon, Rosetta on M1).
Setup: head 8e83a61a2 (merges cleanly into main 195d0d08a), Linux x86-64, i7-8700 (adx in /proc/cpuinfo), GCC 15.2, relinker-only Release.
adx_lowering_tests: 3/3 pass, with thehasAdxbranch taken. The relinker suite passes 188/188.- The native branch catches the bug from the first review on its own. I put
AdxLowering.cppfrom63c454aa6(ADOX OF = ADC signed overflow) back and kept the current test:- as is, it fails on the reference check, "ADX lowering produced the wrong carry flag or changed an unrelated arithmetic flag";
- with that reference flag check also disabled, it fails with "ADX lowering differs from native ADX". So the native comparison runs on ADX hardware and covers ADOX's OF independently of the reference model.
One note on the Windows data point above: the execution section of AdxLoweringTests.cpp is under #if (defined(__linux__) || defined(__APPLE__)) && defined(__x86_64__). So on Windows only the decode and conversion checks run, not the generated-stub execution.
Written with AI assistance (Claude Code). I ran the builds and tests above on my machine.
|
Thanks for running the current head on native ADX hardware. This confirms both the reference-flag check and the native differential catch the ADOX carry regression; the Windows scope note is useful too. I have no further validation request. |
…tta (@MarcZX100) Brings the Rosetta ADX lowering from the open upstream pull request into the fork's main ahead of its review. It and the fork's RDTSCP lowering (boykopovar#6111) each add a Rosetta case at the same point of the AMD64-only matcher; both are kept, RDTSCP first. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Rosetta results for this PR (8e83a61), M1 with macOS 26.6.2, relinker-only Release build:
I also wrote a separate execution check under Rosetta, linked against A gap in the PR's test: in the 32-bit cases every destination value is ≤ 0xFFFFFFFF, so the test doesn't check that bits 63:32 of the destination get cleared. The lowering does clear them (my check started with random upper bits), but a destination like AI-assisted: yes (Claude Code) |
…tta (@MarcZX100) Includes the open upstream macOS pull request, as the fork's main does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Added |
Keeps the macOS port current with 117 upstream commits. Upstream took boykopovar#6111's RDTSCP lowering; the AMD64-only matcher keeps it and the fork's ADCX/ADOX case (boykopovar#7173) after it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Brings the pull request up to the 117 upstream commits that made it conflict. Upstream took boykopovar#6111's RDTSCP lowering; the AMD64-only matcher keeps it and the ADCX/ADOX case from boykopovar#7173 after it, as on the fork's main, where the suites passed with this merge. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
What
Lower ADCX and ADOX instructions in
--to-rosettaoutput using baseline ADC while restoring unrelated arithmetic flags. ADCX maps ADC's carry-out to CF; ADOX maps that carry-out to OF, as required by the two independent carry chains. The lowering handles 32-bit and 64-bit register or memory sources, REX extensions, stack-relative operands, and RIP-relative relocation; it rejects RSP as the destination because the trampoline cannot safely change its own stack pointer. Adds decoder, converter, and generated-stub regression coverage, and records the unsupported RSP-destination case in relinker debt.Tested
check_conventions.py --base upstream/mainpassed.pr_overlap.py --branch codex/rosetta-adx-flags-7157reported no overlap with open PRs; unmergeable shared-file candidates were manually reviewed and no duplicate lowering was found.Checklist
main; no other open PR implements the same functions.mdfiles or images added to the repository--to-rosetta? #7157