Keep the split-hi16 rename, state what belongs in the fork #13

Merged
techwritescode merged 2 commits from r5900-split-hi16-name into r5900-ee 2026-10-15 16:58:07 +00:00

Replaces the R5900 loop tuning in #12 with the parts that are PS2-specific.

  • [Mips] Give the split-hi16 pass its own name so opt can start: the one Mips-only commit from #12.
  • UPDATING.md: a "What belongs in the fork" section. Changes must be gated on the R5900/R3000A or __ps2sdk__, or be hidden options that default to off. Generic pass edits, pass-pipeline callbacks, clang driver -O changes and benchmark-tuned thresholds stay out.

Dropped from #12: the generic LoopUnrollAndJam/LoopUnrollPass/TargetTransformInfo.h edits, the R5900 pass pipeline callback, -funroll-loops at -O1, and R5900 partial/runtime unroll. On the console the partial unroll alone made the -O2 bench functions 1.70x GCC's size; without the tuning they are 0.88x.

Bench on the console with this branch (sdk-core tests/bench, all checksums match GCC), LLVM / GCC cycles:

Kernel -O1 -O2 -O3 -Os
packet_build 0.84 1.11 1.05 0.49
physics 1.52 1.16 2.05 1.04
raster 1.06 1.18 1.01 0.87
other five kernels 0.64-1.00 0.80-1.00 0.77-1.00 0.74-1.01

Total function size LLVM / GCC: 0.96, 0.88, 0.78, 0.92. The speed gaps are documented as exceptions in the bench README (PS2-101).

🤖 Generated with Claude Code

Replaces the R5900 loop tuning in #12 with the parts that are PS2-specific. - `[Mips] Give the split-hi16 pass its own name so opt can start`: the one Mips-only commit from #12. - `UPDATING.md`: a "What belongs in the fork" section. Changes must be gated on the R5900/R3000A or `__ps2sdk__`, or be hidden options that default to off. Generic pass edits, pass-pipeline callbacks, clang driver `-O` changes and benchmark-tuned thresholds stay out. Dropped from #12: the generic `LoopUnrollAndJam`/`LoopUnrollPass`/`TargetTransformInfo.h` edits, the R5900 pass pipeline callback, `-funroll-loops` at `-O1`, and R5900 partial/runtime unroll. On the console the partial unroll alone made the `-O2` bench functions 1.70x GCC's size; without the tuning they are 0.88x. Bench on the console with this branch (sdk-core `tests/bench`, all checksums match GCC), LLVM / GCC cycles: | Kernel | -O1 | -O2 | -O3 | -Os | |---|---|---|---|---| | packet_build | 0.84 | 1.11 | 1.05 | 0.49 | | physics | 1.52 | 1.16 | 2.05 | 1.04 | | raster | 1.06 | 1.18 | 1.01 | 0.87 | | other five kernels | 0.64-1.00 | 0.80-1.00 | 0.77-1.00 | 0.74-1.01 | Total function size LLVM / GCC: 0.96, 0.88, 0.78, 0.92. The speed gaps are documented as exceptions in the bench README (PS2-101). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
The pass argument matched the -mips-split-hi16 option, so opt aborted with a duplicate option registration.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
UPDATING.md: state what belongs in the fork
Some checks failed
action.yml / UPDATING.md: state what belongs in the fork (push) Failing after 0s
release-binaries-all.yml / UPDATING.md: state what belongs in the fork (push) Failing after 0s
release-binaries.yml / UPDATING.md: state what belongs in the fork (push) Failing after 0s
release-documentation.yml / UPDATING.md: state what belongs in the fork (push) Failing after 0s
release-sources.yml / UPDATING.md: state what belongs in the fork (push) Failing after 0s
Check for private emails used in PRs / validate_email (pull_request) Has been skipped
action.yml / UPDATING.md: state what belongs in the fork (pull_request) Failing after 0s
Check LLVM ABI annotations / Check LLVM_ABI annotations with ids (pull_request) Has been skipped
CI Checks / Build and Test Linux (pull_request) Has been skipped
CI Checks / Build and Test Windows (pull_request) Has been skipped
CI Checks / Compute macOS Projects (pull_request) Has been skipped
CI Checks / Build and Test macOS arm64 (pull_request) Has been skipped
release-binaries-all.yml / UPDATING.md: state what belongs in the fork (pull_request) Failing after 0s
release-binaries.yml / UPDATING.md: state what belongs in the fork (pull_request) Failing after 0s
release-documentation.yml / UPDATING.md: state what belongs in the fork (pull_request) Failing after 0s
release-sources.yml / UPDATING.md: state what belongs in the fork (pull_request) Failing after 0s
Add buildbot information to first PRs from new contributors / buildbot_comment (pull_request_target) Has been skipped
Labelling new pull requests / greeter (pull_request_target) Has been cancelled
Labelling new pull requests / automate-prs-labels (pull_request_target) Has been cancelled
f6c4ab0141
Only PS2-CPU-specific changes: target code gated on the R5900 or
R3000A, runtime code gated on __ps2sdk__ or _MIPS_ARCH_R5900, and
hidden options that default to off. Generic pass edits, pipeline
changes, driver -O changes and benchmark-tuned thresholds stay out.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
techwritescode deleted branch r5900-split-hi16-name 2026-10-15 16:58:09 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
ps2/llvm!13
No description provided.