You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/ASSEMBLY_NOTES.txt
+27Lines changed: 27 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -99,3 +99,30 @@ Locality measurements after the converter change
99
99
- convert32 hot_ns 1796649.7, ring_ns 2212638.0, ring/hot 1.232 after the store-order change.
100
100
- build/examples/benchmark 4096 3000 after the converter change: Native_ns 3962.2, Std_ns 5200.2, F32Nat_ns 2961.7, F32Std_ns 3019.6.
101
101
- build/examples/benchmark 65536 500 after the converter change: Native_ns 124034.0, Std_ns 152776.9, F32Nat_ns 69347.7, F32Std_ns 79781.1.
102
+
103
+
Native f32 locality follow-up, 2026-06-12
104
+
105
+
Change
106
+
- forward_native_f32 now emits heapopt native order by iterating native output positions and reading NATIVE_LEAF[pos] from the residue work buffer.
107
+
- This makes the public native spectrum write stream linear. The unavoidable permutation moves to reads from the already-hot residue buffer, which is generally cheaper than scattered complex output stores.
108
+
- Small N without heapopt still uses the old IDX loop.
109
+
110
+
Assembly check
111
+
- On arm64 Apple clang, build/src/bfft.s shows the native f32 output loop loading two NATIVE_LEAF indices with ldpsw, gathering two residue pairs from work, and writing two adjacent complex_f32_t results with stp while advancing the output pointer.
112
+
- This is the locality shape we want from a generic design perspective: sequential destination pressure, compact index stream, no architecture-specific scatter primitive.
113
+
114
+
Locality measurements after native f32 store-order change
0 commit comments