Compare commits

...
1 Commits
Author SHA1 Message Date
weaselbot 79ae91e7d3 Correct rationale in simd_x86_64.S comment
The SIMD operations are written in assembly because loading and
operating on indeterminate values is UB in C++ but well-defined in
assembly. msan not tracking the loads is a side effect, not the reason.
Closes #71
2026-08-02 22:25:16 -04:00
+4 -3
View File
@@ -1,7 +1,8 @@
// SIMD operations on potentially-indeterminate Node16::index[16] bytes.
// Written in assembly so msan doesn't track the loads. The caller is
// responsible for masking the returned bitfield to [0, numChildren) before
// using it.
// Written in assembly because loading and operating on indeterminate values
// is UB in C++ but well-defined in assembly. (A side effect is that msan
// doesn't track the loads.) The caller is responsible for masking the
// returned bitfield to [0, numChildren) before using it.
//
// All functions return a 16-bit bitmask in %eax (bit i set = condition true
// at index i). The upper 16 bits of %eax are zero.