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
{{ message }}
Repository navigation
Commit b4bda4c
Browse filesBrowse the repository at this point in the historyBrowse files
simd: eq_u32_via_to_mask — an equality predicate read through a foreign key
`out[i] = fk[i] < foreign.len() && foreign[fk[i]] == v`, one pass, zero
fallback on an out-of-range key. This is the join filter in factored
form: the consumer needs neither a predicate plane over the foreign table
nor a gathered mask over its own rows. Parity check 0xD40 in group 13.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GXUahz73MZxtxWcfpHp9dG
Copy file name to clipboardExpand all lines: .claude/blackboard.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,6 +7,7 @@ Parity: `check_gather_scatter_group` (0xDxx) in `crates/simd-masking-parity`, ag
7
7
`masked_group_sum_i32_via(mask, index, remap, values, out)` — the same one-pass keyed sum with the key read through a foreign-key hop (`SUM(line.amount) GROUP BY partner.country`); the indirection is fused so no remapped key lane of N is ever materialised. Fourth arm of the same parity group (0xD3x).
⊘ CORRECTED (operator ruling, same day): `mask_scatter_or_u32`, `masked_group_sum_i32`, and `masked_group_sum_i32_via` no longer zero `out`/`out_words` on entry — a fold kernel accumulates into the caller's demanded sink, and the caller zeroes it once. `mask_gather_u32` is unaffected (its destination is its own output tile). Each function's doc comment now states "accumulates into `out`; the caller zeroes `out` once before the first call"; the surplus/unreferenced-slot assertions in the tail tests were reworded to "untouched, stays as the caller left it" rather than "cleared". Every unit test whose `out` buffer relied on the old zeroing was given an explicit zeroed prefill in its arrange step, and each of the three functions got two new two-sided tests (a preloaded slot/bit that survives untouched alongside the call's own contribution landing correctly; a second call with a different mask summing/unioning on top of the first) — disable-verified red-then-green by temporarily restoring the whole-buffer zero in each function in turn. The parity crate's `check_gather_scatter_group` (0xDxx) now zeroes `out`/`out2` explicitly before its from-zero reference checks and adds one accumulation check per function (0xD11/0xD22/0xD32) that preloads `out` and asserts the call adds on top.
10
+
Fifth arm, same parity group: `eq_u32_via_to_mask(fk, foreign, v, out_words)` — the same fk lane evaluated as a join-filter PREDICATE packed into a mask rather than folded into a sum (`fk[i] < foreign.len() && foreign[fk[i]] == v`, zero-fallback at the out-of-range hop, full overwrite of tail/surplus like `mask_gather_u32`); parity check `0xD40`, disable-verified red-then-green by flipping `==` to `!=` in the kernel and back.
10
11
11
12
## 2026-09-17 (19) — G8 named: a tree-depth column (`lzcnt(bswap(x)) >> 2`) is the missing primitive for basin-local ranking; popcount is only its tie-break
0 commit comments