500 Commits
Author SHA1 Message Date
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
andrew 56e847b63c Experiment with CLOCK_THREAD_CPUTIME_ID 2024-07-15 21:34:22 -07:00
andrew 7fd1c9e140 Make range_read_iterations_total consistent with others 2024-07-15 17:23:48 -07:00
andrew ebaac253e2 Don't count loop entry as an "iteration" 2024-07-15 14:46:57 -07:00
andrew 9b470a367c Add check_bytes_total counter 2024-07-15 14:40:22 -07:00
andrew e7806a36d1 Fix range_read_total counter
It was overcounting
2024-07-15 14:09:31 -07:00