416 Commits
Author SHA1 Message Date
andrew 447da11d59 Remove obsolete optimizations
These are a relic of when we used forEachInRange for checkMaxBetween
2024-06-29 22:47:42 -07:00
andrew daa8e02d4f Fixes from testing on an avx512f-capable machine 2024-06-29 22:41:39 -07:00
andrew fd3ea2c2a8 clang-format fixes 2024-06-29 22:21:50 -07:00
andrew 0b839b9d7e Fixes for symbol multi-versioning with avx512f 2024-06-29 22:20:50 -07:00
andrew 11a022dcf7 Attempt at avx512f 32bit compare 2024-06-29 21:56:21 -07:00
andrew 94da4c72a5 Fix clang-format 2024-06-29 15:11:40 -07:00
andrew 461e07822a 32-bit x86 simd for the other scan16 too 2024-06-29 15:10:36 -07:00
andrew 75499543e7 Fix clang-format 2024-06-29 15:03:44 -07:00
andrew 81f44d352f SIMD scan16 for x86 + 32-bit versions 2024-06-29 15:01:18 -07:00
andrew 45da8fb996 Use the faster unvectorized implementation for Node3 2024-06-28 22:52:39 -07:00
andrew 4958a4cced Make always_inline function inline
Try to fix warning in jenkins
2024-06-28 22:42:01 -07:00
andrew 648b0b9238 Add an always_inline, with explanatory comment 2024-06-28 19:55:33 -07:00
andrew d3f4afa167 More SIMD for scanning Node256 with 32-bit versions 2024-06-28 19:48:06 -07:00
andrew f762add4d6 Write vectorized 32-bit compare by hand for arm in scan16 2024-06-28 17:28:59 -07:00
andrew b311e5f1f0 Add an experimental, disabled 32 bit internal version
I think it's only missing detection for full-precision versions more
than 2e9 apart
2024-06-28 15:53:35 -07:00
andrew ff81890921 Rename MaxVersionT to InternalVersionT 2024-06-28 14:34:48 -07:00
andrew 0e96177f5c Allow to easily experiment with 32 bit "max version" type 2024-06-28 13:54:12 -07:00
andrew efb0e52a0a SIMD implementation of scan16 for x86
Closes #29
2024-06-27 22:21:41 -07:00
andrew 2df7000090 Remove switch on phase from Stepwise left/right step 2024-06-27 20:51:35 -07:00
andrew 5378a06c39 Vectorize all bounds checks for Node256 scan 2024-06-27 17:40:23 -07:00
andrew 12c6ed2568 Reorganize to prepare for better vectorized first/last page 2024-06-27 17:21:41 -07:00
andrew c065b185ae Vectorize inner page check for Node256 2024-06-27 17:09:45 -07:00
andrew 639518bed4 Share "scan16" between Node16 and Node48 2024-06-27 13:22:51 -07:00
andrew 7de983cc15 Simd bounds checking for scan for Node16 2024-06-27 13:08:12 -07:00
andrew 1b4b61ddc6 Write Node16 scan in a "more vectorized" style 2024-06-27 12:07:38 -07:00
andrew bff7b85de2 Remove "Child" struct 2024-06-27 10:03:14 -07:00
andrew 9108ee209a SoA instead of AoS for child, maxVersion 2024-06-27 09:57:54 -07:00
andrew f8bf1c6eb4 Remove unreachable code 2024-06-26 22:14:27 -07:00
andrew 4da2a01614 Use single &, to show branch-free intent 2024-06-26 22:14:05 -07:00
andrew bb0e654040 Fix missed update for Node48::maxOfMax 2024-06-26 22:11:33 -07:00
andrew 02866a8cae Save some bounds checking for scanning Node256 2024-06-26 20:55:18 -07:00
andrew fa86d3e707 "max of max" for Node48 again, but physical instead of logical 2024-06-26 20:41:27 -07:00
andrew 7d1d1d7b2a Maintain childMaxVersion == 0 for unused children in Node48 2024-06-26 20:16:50 -07:00
andrew 789ecc29b3 Use unsigned compare trick to check in bounds 2024-06-26 19:41:25 -07:00
andrew 08f2998a85 Use 8 byte pages for "max of max"
This seems to benchmark better
2024-06-26 19:18:38 -07:00
andrew c882d7663d Maintain "reverseIndex" in Node48 2024-06-26 19:11:34 -07:00
andrew bfea4384ba Branchless inner page check for Node256 2024-06-26 18:28:41 -07:00
andrew 6520e3d734 "max of max" for Node48 2024-06-26 17:54:03 -07:00
andrew 22e4ab01a1 Track "max of max" versions in Node256 2024-06-26 16:28:24 -07:00
andrew b3aeed0caa Warning: interface change! Require versions >= 0 2024-06-26 15:46:36 -07:00
andrew 5f3833e965 Change maxVersion to return by value, and add setMaxVersion 2024-06-26 15:33:15 -07:00
andrew 8b1cd9c052 Minor improvements to checkMaxBetweenExclusive 2024-06-26 15:06:50 -07:00
andrew 488c723726 Improve worst-case radix tree checkRangeRead 2024-06-25 21:22:55 -07:00
andrew 2eb461b8ea Fix build for llvm 18 2024-06-11 11:38:55 -07:00
andrew 6e63fd5126 Add internal entry points, with test coverage
Closes #25
2024-04-19 11:23:25 -07:00
andrew d2e1863593 Account for every uncovered line in the implementation
Closes #23
2024-04-18 12:43:48 -07:00
andrew c15d296432 Exercise copyChildrenAndKeyFrom for Node{48,256} to itself 2024-04-17 17:13:22 -07:00
andrew 309d315956 Add DebugConflictSet, which asserts using skip list as a reference
CC #23
2024-04-17 12:08:39 -07:00
andrew 85db1a8786 Allow to choose implementation in python wrapper
And fix a few minor bugs to make the python tests pass for skip_list.

CC #23
2024-04-17 12:08:28 -07:00
andrew fd93300ce8 Tweaks and add more planned sections 2024-04-16 17:36:29 -07:00