refactor: fill gaps #2
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!2
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fill-gaps"
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?
Implements various features and improvements other compilers such as LLVM & GCC have that are missing from Vulcan. This has yielded more performance.
Performance
Measured with
zig build run-uarch-benchon an Ampere Altra (Neoverse N1) host,master(80f7914) vs this branch (9158a43), averaged over 3 runs. Eachkernel is JIT-compiled and its baseline/tuned outputs are checked bit-for-bit
before timing, so these are verified-correct cycle counts, not just "it built".
work in this branch: the Wimmer-Franz allocator, block layout, jump threading,
address folding).
master.Summary: sizable wins on loop and memory-bound kernels (sum-loop up to
1.54x, strided-sum 1.40x on base isel, mem-add 1.21x), driven by the cross-block
register allocation and layout work. Very short straight-line dependency chains
(
mul-chain,fma-chain, ~17-18 cycles) are flat to about 1 cycle slower,within measurement noise. All kernels verify bit-for-bit against their baseline.
Four additional kernels land on this branch with no
masterequivalent(
pressure,mem-pair,saxpy-loop,fsum-loop); for reference their tunedspeedups over their own baseline are saxpy 1.79x and fsum 3.93x.