fix(aarch64): fix vulcan-target on aarch64 darwin #4
No reviewers
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
LilithSemi/vulcan!4
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "theoparis/fix-aarch64-widen-non-leaf-fpr-owsrqzxsrztm"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Non-leaf functions only got 8 allocatable FPR registers (v8..v15), while non-leaf GPR functions got 14 (x19..x28 + x9..x12). Every aarch64 FP/vector operand is must_have_register (no spill-slot folding), so a non-leaf shader with several simultaneously live float/vector temporaries at one program point (loop header/merge point) could exceed the pool and hit spillCurrent's 'too many live params' bail-out (error.Unsupported), even on ordinary code such as vkcube's fragment shader on darwin/aarch64.
Mirror the existing GPR non-leaf widening by also offering the caller-saved v16..v23, which are already call-clobbered per the per-call clobber list.
Assisted-By: Claude Opus 4.8