Commit Graph
505 Commits
Author SHA1 Message Date
andrew c3a047fdf8 Handle newly-created node partial key immediately 2024-08-06 09:22:21 -07:00
andrew b4b469a175 Use maxOfMax in fixupMaxVersion 2024-08-05 21:41:49 -07:00
andrew 0201e27498 Remove redundant setMaxVersion calls 2024-08-05 19:29:38 -07:00
andrew 2010920a2c Correct comment 2024-08-05 19:28:24 -07:00
andrew 19af8da65c Fix endNode's max version after the fact
This sets us up to unconditionally update the max version along the
search path for inserts, and avoid dispatching on type twice per
iteration.
2024-08-05 17:50:26 -07:00
andrew 80785e3c3b Avoid switch on parent type for max version during search 2024-08-05 16:40:58 -07:00
andrew f5d021d6b6 Add multi-version rezero16 2024-08-03 14:22:50 -07:00
andrew 1c41605b53 Use std::countr_zero instead of __builtin_ctz
Doesn't seem to affect codegen in these cases.
2024-08-03 10:01:12 -07:00
andrew 8f03a105bb Use target avx512f,avx512bw
Appears to fix gcc build
2024-08-02 21:47:23 -07:00
andrew 0e574856be Make checkMaxBetweenExclusive a multi-version function
This introduces more branches but reduces code size
2024-08-02 21:09:55 -07:00
andrew 493a6572ad Only exclude avx512-targeted functions from coverage 2024-08-02 20:53:30 -07:00
andrew abce4591d0 Fix preprocessor guard for avx512 longestCommonPrefix 2024-08-02 20:46:32 -07:00
andrew f1ad68109a Skip lcp call in SearchStepWise if no partial key 2024-08-02 18:16:55 -07:00
andrew c4443bc355 Remove len < 8 check in longestCommonPrefix
Micro benchmarks look a tiny bit better /shrug
2024-08-02 18:16:55 -07:00
andrew 857b402fe2 Add an avx512bw longestCommonPrefix 2024-08-02 18:16:55 -07:00
andrew 9b3e1b219b Remove small memmoves in erase 2024-08-02 18:16:55 -07:00
andrew ab52c63935 Move local accum's into ReadContext 2024-08-02 18:16:55 -07:00
andrew bad9d7ced8 Avoid some tls lookups for InternalVersionT::zero 2024-08-02 18:16:55 -07:00
andrew c8d9dc034d Remove memmove call for inserting into Node16 2024-08-02 18:16:55 -07:00
andrew 72168ef6a3 Avoid memmove when inserting into Node3 2024-08-02 18:16:55 -07:00
andrew 7351b6e417 More gcovr exclusions for function multi-versioning 2024-08-01 15:53:38 -07:00
andrew ca804f28c0 Get back to 100% line coverage locally 2024-08-01 15:31:38 -07:00
andrew 3898cb596a Use _mm512_loadu_epi32 instead of memcpy
The latter somehow generated a vmovdqa64 instruction that segfaulted on
unaligned memory, with gcc and --coverage. Hmm.
2024-08-01 15:24:09 -07:00
andrew b8edd92698 Fix warning 2024-08-01 15:23:43 -07:00
andrew 4113183155 Attempt to fix likely arm bug 2024-08-01 14:01:41 -07:00
andrew adb8fdc5e9 Simplify nextPhysical 2024-08-01 14:00:02 -07:00
andrew c86e407985 Return Node from getChildGeq
It seems all callers ultimately want this
2024-08-01 13:53:18 -07:00
andrew 71a84057cb Find two more call sites for getFirstChildExists 2024-08-01 13:37:44 -07:00
andrew 9c5e5863c2 Simplify remaining "down left spine" loops 2024-08-01 13:17:33 -07:00
andrew be67555756 Simplify more "down left spine" loops 2024-08-01 13:13:55 -07:00
andrew 988ec5ce69 Add getFirstChildExists 2024-08-01 13:05:40 -07:00
andrew f5a0d81c52 Remove some redundant branches
I think they were getting optimized out, but still
2024-08-01 12:37:57 -07:00
andrew 3b2bd16cd1 Add overloads of getChild for each type 2024-08-01 11:42:55 -07:00
andrew 4b3df0a426 Avoid dispatching on node type twice in nextPhysical 2024-08-01 10:46:08 -07:00
andrew 4cdf6deb50 Remove a branch in happy path in addWrites 2024-08-01 10:28:50 -07:00
andrew f21dde06d3 Group write metric accumulators into a struct 2024-07-31 21:45:20 -07:00
andrew fce998460f Use int64_t internally for metrics
So we can use fetch_add
2024-07-31 14:41:42 -07:00
andrew 1fcca6450d Fix point writes accounting
Previously it wouldn't count a singleton range write
2024-07-26 14:41:54 -07:00
andrew c649bc7964 Interleave calls for two conflict sets in tests 2024-07-23 11:12:02 -07:00
andrew fb9f5ce6f4 Update InternalVersionT::zero in addWrite call
There can be other conflict sets in the same thread
2024-07-22 16:14:25 -07:00
andrew ebf281220b Add NOLINT for new clangd warning about sizeof pointer 2024-07-19 11:24:37 -07:00
andrew 11c3ca6766 Add oldest_extant_version metric 2024-07-18 14:19:11 -07:00
andrew b45dec2f1f Add point_writes_total and range_writes_total 2024-07-18 14:00:57 -07:00
andrew c5e9f18c47 Remove some unnecessary std::exchange's 2024-07-17 18:57:12 -07:00
andrew cebbf89cbe Fix build for x86 2024-07-17 18:47:12 -07:00
andrew abb791d86b Just use a normal && in a place where being branch-free isn't a big deal 2024-07-17 18:21:33 -07:00
andrew 12f361f33a Don't plumb impl and ReadContext 2024-07-17 18:20:08 -07:00
andrew 640c1ca9dd Fix issue with thread_local performance 2024-07-17 17:54:39 -07:00
andrew b7d54d44e1 Add oldest version and newest version metrics 2024-07-17 16:42:46 -07:00
andrew 95596f831f Add some metrics for addWrites and setOldestVersion 2024-07-17 16:35:29 -07:00