Repository navigation
Conversation
31cd065 to
7725ddb
Compare
|
@boykopovar Could you review the architecture and integration of this initial compiler-only ARM64 AOT implementation, related to #1553? It is now ready for review at |
7725ddb to
b7e3f8d
Compare
|
@boykopovar Current head |
b7e3f8d to
a2f4f36
Compare
|
Thanks for the work and for keeping the scope explicit (compiler-only, limits recorded in BUILD/TechnicalDebt). This adds a new area rather than a fix, so it needs a direction call before a code review:
@boykopovar @oneandonlydean: do you want this in-tree at this stage (new submodules, the Apple-only workflow, the long-term ARM64 direction from #1553), or should it live out of tree until a runtime exists? We can't build or run it on Linux, so the claims that depend on macOS/ARM64 (the 212 tests, the emitted code) remain unverified on our side. |
|
I'd keep it out of tree until there's a runtime that runs something with it: we can't build or check it here, and it brings two submodules and an Apple-only workflow with no runnable output yet. The ARM64 direction (#1553) is the owner's call. |
|
Follow-up: the original PS5 DOOM executable now completes all three demos as ARM64 AOT, without Rosetta, with its original libc module converted and initialized alongside it. The reproducible run uses lowbit/ps5-doom v1.1.1, PPSA99666, the frozen shareware WAD and the title's CPU scaler. Results: 5,026 / 3,836 / 2,134 gametics, six exact 1920×1080 RGB comparisons against the pinned source-built reference, normal title-requested exit, module finalization and Vulkan teardown. The executable is ARM64 Mach-O and reports Four new commits separate the reused #3533 AudioOut shutdown fix, remaining VEX lowering, and the SCE services/consumer. The build and verification procedure and qualified binding manifest are included. No additional PR was opened; the branch builds on the existing ARM64 stack and still needs upstream review/integration. Local validation: 711 compiler/runtime/relinker tests, 29 native tests, callback/varargs checks with ASan/UBSan (linked platform libraries uninstrumented), the controlled AudioOut shutdown regression, cube execution with 600 flips per implementation and eight exact RGB comparisons, Pad and the modular consumer. The Strings.cpp identity change was requalified after checking that the complete consumed memcpy/memset definitions and effects remained unchanged. The final static ABI guard also rejects host Scope remains explicit: these are recorded demos with the CPU scaler, not AGC presentation, arbitrary WADs, controller hardware or a performance comparison. Scalar FMA currently rejects nonfinite operands; floating status and alternate rounding remain unqualified. VTEST exposed a Rosetta flag discrepancy, so all flags are checked against an independent integer model following the Intel specification. The compatibility compiler used here is separate from the ongoing native-quality compiler work. Host: Apple M5 Max, macOS 27.2, Apple Clang 21, Vulkan/MoltenVK. AI-assisted: yes. |
What
Retain this PR as the architectural discussion and review record for the experimental offline x86-64 to native ARM64 compiler. The complete implementation is consolidated in #5021, including the runtime and runnable consumers. This draft preserves the original review context; it is not a second implementation to merge or a dependency that must land before #5021.
The architectural constraints remain native ARM64 AOT output, reuse of AnyPS5 platform services, explicit input/ABI/effect qualification and rejection of unsupported cases. The shipped executable contains no x86 interpreter, JIT or Rosetta dependency. The original proposal's typed native-call compiler and the broader guest-state compatibility backend have distinct qualified scopes; recovering native values and effects across caller chains remains the direction for further simplification and performance work.
The existing request for a runnable end-to-end consumer is retained in review history. The source-built
hello_notifyexample, native provider startup and explicit Linux ARM64 target provide that reproduction path. They do not settle the maintainers' decision about architecture, dependency policy or in-tree acceptance. Further implementation review belongs in #5021; architecture and contributor coordination can remain here.Tested
Discussion branch integrated with upstream
51acb79ac49eeabf2d0e1d377867f953eb1bcefa. All 466 local compiler/runtime tests and the conventions check passed on Apple M5 Max / macOS 27.2. Full combined consumer/runtime evidence is described on #5021 and must not be attributed to this narrower branch.The source-built example and reproduction commands are in
docs/dev/BUILD.md. EnableANYPS5_RELINKER_ONLY,ANYPS5_NATIVE_AOT,ANYPS5_NATIVE_AOT_EXAMPLEandBUILD_TESTING. The bounded CI variant shortens the example delay; the runtime sleep behavior is unchanged. Full Linux/Windows builds still require maintainer dispatch; new-head hosted results are separate from local results and historical checks.Checklist