Marshall Lochbaum
|
eb34213f0f
|
Fast ≍˘ for matching-type type-sized cells
|
2023-12-30 21:45:24 -05:00 |
|
Marshall Lochbaum
|
58f4f15f8f
|
Move more functionality to avx512.singeli
|
2023-12-30 10:43:40 -05:00 |
|
Marshall Lochbaum
|
92db3f15d0
|
Implement ≠` with AVX-512 clmul and GFNI
|
2023-12-30 10:43:06 -05:00 |
|
dzaima
|
9dc44ed1a9
|
make singeli/arch.bqn the source of SINGELI_AVX2
+ removes noting of lack of AVX2, which isn't shown from the makefile anyway
|
2023-12-30 02:09:56 +02:00 |
|
dzaima
|
18d2fa5f1c
|
rename Singeli select function
in anticipation to Singeli update which adds select as a builtin
|
2023-12-29 23:35:22 +02:00 |
|
dzaima
|
f11bebf8f4
|
fix usz=64 build
|
2023-12-28 19:17:57 +02:00 |
|
Marshall Lochbaum
|
dcb031d142
|
Make sure value in store{} has an appropriate type
|
2023-12-27 16:44:53 -05:00 |
|
dzaima
|
840c40748f
|
fix f64 scans on SSE2
|
2023-12-15 19:18:23 +02:00 |
|
dzaima
|
94b1d90995
|
SSE2 & NEON /⁼
|
2023-12-14 18:08:56 +02:00 |
|
dzaima
|
ec4db6dbad
|
tiny Singeli include changes
|
2023-12-10 15:55:57 +02:00 |
|
dzaima
|
3454fbe3ee
|
defer negated ≤AVX2 comparison negation to GPR result
|
2023-12-05 17:37:37 +02:00 |
|
dzaima
|
f02c92ee6a
|
fix 3 ∨ "abc"
|
2023-11-23 18:13:51 +02:00 |
|
dzaima
|
8814a7e66e
|
use 2x unroll for i16→u1 copying to utilize two-vector homMask
|
2023-11-21 02:45:33 +02:00 |
|
dzaima
|
773429a959
|
recursive base-case of homMask
|
2023-11-21 02:40:50 +02:00 |
|
dzaima
|
08fa7d3d30
|
specialize x86-64 homMask of 2x[n]i16, use for comparison
|
2023-11-21 02:29:03 +02:00 |
|
dzaima
|
3ebfb24b0f
|
unroll copying to bitarr
+ clean up comparison code as bulk homMask is supported everywhere
|
2023-11-21 00:18:18 +02:00 |
|
dzaima
|
fe985722c2
|
move multi-vector homMask to allow NEON to override it
|
2023-11-21 00:18:18 +02:00 |
|
dzaima
|
56cbe4aa03
|
mulHi → mulh for high half of element result
to not be confused with mulwHi or zipHi where it means providing the high batch of elements
|
2023-11-18 00:43:20 +02:00 |
|
dzaima
|
46e8ed1a3f
|
fix SSE4.2 usz=64 build
|
2023-11-13 23:28:30 +02:00 |
|
dzaima
|
b4e53abbe4
|
some comments
|
2023-11-13 16:38:02 +02:00 |
|
Marshall Lochbaum
|
c94d51dcaf
|
Fixes for 64-bit usz
|
2023-11-13 08:24:51 -05:00 |
|
dzaima
|
4fb6ce602f
|
add a require{} for CRC32
|
2023-11-13 12:56:48 +02:00 |
|
Marshall Lochbaum
|
09572de49a
|
Credible resizing policy for dyadic search hashes
|
2023-11-12 22:07:29 -05:00 |
|
Marshall Lochbaum
|
ee7a11a279
|
Unify self-search hash thresholds across primitives; doesn't seem to hurt performance
|
2023-11-12 14:35:25 -05:00 |
|
Marshall Lochbaum
|
5957487b70
|
Faster iteration over non-empty entries for hash table resizing
|
2023-11-11 20:24:20 -05:00 |
|
Marshall Lochbaum
|
b404c7c1d1
|
Eliminate a loop when resizing ordered hash
|
2023-11-11 20:24:20 -05:00 |
|
Marshall Lochbaum
|
3a50cda5d3
|
Specialize Index-of tables on result type
|
2023-11-10 17:12:37 -05:00 |
|
Marshall Lochbaum
|
b782693d15
|
Insert maxh to a special end bucket for ⊒ and reverse ⊐ (fixes ⊒ maxh bugs)
|
2023-11-10 12:04:55 -05:00 |
|
Marshall Lochbaum
|
e1b0c53c92
|
Fix various sentinel bugs
|
2023-11-09 20:24:46 -05:00 |
|
Marshall Lochbaum
|
2c625127d5
|
Reverse hashed Index-of
|
2023-11-09 10:39:07 -05:00 |
|
Marshall Lochbaum
|
f1485ca98c
|
Turn hash function definition structure inside-out
|
2023-11-09 09:19:47 -05:00 |
|
Marshall Lochbaum
|
aded9d4782
|
Shortcutting for reverse Member-of hash
|
2023-11-08 17:34:33 -05:00 |
|
Marshall Lochbaum
|
8e9c04523a
|
Fix overflow bug in hashed Member-of max_off calculation
|
2023-11-08 10:28:14 -05:00 |
|
Marshall Lochbaum
|
c75fdbc277
|
Reverse Member-of hash lookup
|
2023-11-07 22:07:17 -05:00 |
|
Marshall Lochbaum
|
8a2190b092
|
64-bit hashes with float normalization
|
2023-11-07 14:54:16 -05:00 |
|
Marshall Lochbaum
|
a4290b1f5c
|
Shortcut for hash-table dyadic ⊒
|
2023-11-07 09:59:53 -05:00 |
|
Marshall Lochbaum
|
4bf4149d40
|
Use hash deletion for forward ⊒ as well as reverse
|
2023-11-07 09:41:50 -05:00 |
|
Marshall Lochbaum
|
289658a59c
|
Delete hash entry as soon as it's cleared, not on next access
|
2023-11-07 07:53:45 -05:00 |
|
Marshall Lochbaum
|
30331eb800
|
Fix write off end for reverse ⊒
|
2023-11-07 07:15:17 -05:00 |
|
Marshall Lochbaum
|
c042fe6ca3
|
Vector binary search for integer Index-of
|
2023-11-06 15:43:26 -05:00 |
|
Marshall Lochbaum
|
d154ece51a
|
Vector binary search for 16-bit Member-of in addition to 32 (8 is too slow)
|
2023-11-06 09:37:58 -05:00 |
|
Marshall Lochbaum
|
11245d385e
|
Vector binary search Member-of
|
2023-11-05 22:10:39 -05:00 |
|
Marshall Lochbaum
|
75aed91f32
|
And max offset of 8 by testing two vectors
|
2023-11-05 15:46:26 -05:00 |
|
Marshall Lochbaum
|
ec31543604
|
Vector Member-of search up to an offset of 4
|
2023-11-05 15:45:07 -05:00 |
|
Marshall Lochbaum
|
af81da50e4
|
Don't need to initialize indices for hashed Index-of
|
2023-11-04 17:52:22 -04:00 |
|
Marshall Lochbaum
|
1286ee32ec
|
Reverse lookup for hashed Progressive Index-of
|
2023-11-03 21:58:17 -04:00 |
|
Marshall Lochbaum
|
84f3205547
|
Use a larger initial hash table if non-hashed argument is large
|
2023-11-03 21:50:38 -04:00 |
|
Marshall Lochbaum
|
a9f33c1454
|
Refactoring
|
2023-11-03 16:38:08 -04:00 |
|
Marshall Lochbaum
|
8aa6c07199
|
And hashed 32-bit Progressive Index-of
|
2023-11-02 20:29:54 -04:00 |
|
Marshall Lochbaum
|
64f2a10fbb
|
Return hash_resize{} from hash_alloc{}
|
2023-11-02 13:21:11 -04:00 |
|
Marshall Lochbaum
|
d54621b5dd
|
Extend hash table to 32-bit Index-of
|
2023-11-02 12:00:32 -04:00 |
|
Marshall Lochbaum
|
ed03720441
|
Robin Hood hash table for 32-bit membership
|
2023-11-01 15:46:45 -04:00 |
|
Marshall Lochbaum
|
cb8be206be
|
Move hash allocation to a generator
|
2023-10-31 22:09:11 -04:00 |
|
Marshall Lochbaum
|
ee856a4880
|
Move hash resizing to a generator, and other refactoring
|
2023-10-31 22:09:11 -04:00 |
|
Marshall Lochbaum
|
0fb845d336
|
Move self-search hash table code to Singeli
|
2023-10-31 22:09:11 -04:00 |
|
dzaima
|
9c68e67544
|
fix compilation error when targeting AVX1-only
|
2023-10-07 13:22:27 +03:00 |
|
Marshall Lochbaum
|
6330d61a88
|
Some rearrangement and minor simplifications
|
2023-09-12 10:24:00 -04:00 |
|
Marshall Lochbaum
|
72da47d48a
|
Use standard for loops
|
2023-09-12 09:12:57 -04:00 |
|
Marshall Lochbaum
|
40ed55bc43
|
Use built-in NEON include for basic vector instructions
|
2023-09-11 21:17:38 -04:00 |
|
Marshall Lochbaum
|
7b9f7ba331
|
Move x86 vector and NEON includes into base.singeli
|
2023-09-11 20:25:25 -04:00 |
|
Marshall Lochbaum
|
082f800b3e
|
Combine x86 vector extensions and use iintrinsic/basic when possible
|
2023-09-11 20:11:16 -04:00 |
|
Marshall Lochbaum
|
c85ca66dae
|
Unify Scan and Bins min-scan code
|
2023-08-26 09:27:59 -04:00 |
|
Marshall Lochbaum
|
0a30fb309d
|
SSE2 min- and max-scans
|
2023-08-26 07:26:33 -04:00 |
|
Marshall Lochbaum
|
a040a14744
|
Unify power-of-two shift pattern for scans
|
2023-08-26 07:26:33 -04:00 |
|
Marshall Lochbaum
|
d16ba6c3b1
|
Move xor-scan to scan.singeli; remove neq.singeli
|
2023-08-26 07:26:33 -04:00 |
|
Marshall Lochbaum
|
e261e80168
|
SSE min/max and pluswrap scans
|
2023-08-26 07:26:33 -04:00 |
|
Marshall Lochbaum
|
f9a4a5b68c
|
Remove duplicated SSE4.1 min/max bindings
|
2023-08-26 07:26:33 -04:00 |
|
Marshall Lochbaum
|
00c454d37a
|
Add generic-architecture versions of Singeli scans
|
2023-08-26 07:26:33 -04:00 |
|
dzaima
|
34d4fd6433
|
more explicit loadu/storeu
|
2023-08-20 00:18:09 +03:00 |
|
dzaima
|
4d19654e3b
|
fix store types
|
2023-08-16 19:01:04 +03:00 |
|
dzaima
|
acca5c0c7c
|
fix completely wrong dyTable lookup
|
2023-08-15 14:45:27 +03:00 |
|
Marshall Lochbaum
|
4e9745688b
|
Use generic boolean Compress as the sparse case with Singeli
|
2023-08-07 13:47:58 -04:00 |
|
Marshall Lochbaum
|
bbad98bce1
|
In AVX2 boolean Compress, jump from 8 to 32 with 32-bit shifts
|
2023-08-07 11:41:53 -04:00 |
|
Marshall Lochbaum
|
120df26814
|
mullo works for both signed and unsigned
|
2023-08-07 11:23:38 -04:00 |
|
Marshall Lochbaum
|
d039562efe
|
Fix disabled BMI2 boolean Compress; cleaner SIMD width system
|
2023-08-06 08:09:08 -04:00 |
|
Marshall Lochbaum
|
9046dd6b53
|
Handle boolean Compress SIMD tail with conditional write, not scalar loop
|
2023-08-06 08:03:14 -04:00 |
|
Marshall Lochbaum
|
07ace41d6c
|
Vectorized version of the clmul boolean Compress
|
2023-08-06 07:36:05 -04:00 |
|
Marshall Lochbaum
|
371aa6f2ef
|
AVX2 boolean Compress using variable shifts
|
2023-08-05 21:50:22 -04:00 |
|
Marshall Lochbaum
|
66c0fe041c
|
Get pext and popcount together, since generic pext emulation includes popc
|
2023-08-05 20:38:54 -04:00 |
|
Marshall Lochbaum
|
056b18edd2
|
Move pext-based compress loop from C to Singeli
|
2023-08-05 20:38:54 -04:00 |
|
Marshall Lochbaum
|
e09d385df5
|
Simplify pairwise pext implementation; drop 12-bit as no longer competitive
|
2023-08-05 20:38:54 -04:00 |
|
dzaima
|
0b6c5189d8
|
move arithdDispatch declarations to a header
+ rename some things to make more sense
|
2023-07-31 20:26:05 +03:00 |
|
dzaima
|
0d7de8b190
|
define ux in Singeli, replacing Size; return ux from popc/clz/ctz
|
2023-07-26 17:42:23 +03:00 |
|
dzaima
|
f7a0eb94a3
|
don't use AVX2 buffer copying for a 16-byte buffer
|
2023-07-22 21:34:20 +03:00 |
|
dzaima
|
1451395ef5
|
don't do fancy char stuff for unchecked arith
|
2023-07-22 21:13:49 +03:00 |
|
dzaima
|
959614c785
|
use partial application
|
2023-07-22 18:19:31 +03:00 |
|
dzaima
|
033f3de6b9
|
remove unnecessary lambda wrappers
also use fmtnat
|
2023-07-22 18:15:07 +03:00 |
|
dzaima
|
446b2d09ed
|
Singeli renames & docs
|
2023-07-22 17:37:20 +03:00 |
|
dzaima
|
6e96600878
|
move unaligned load & store to base.singeli
|
2023-07-20 00:21:09 +03:00 |
|
dzaima
|
0486adccb5
|
fix signedness of abs{x}
|
2023-07-20 00:19:54 +03:00 |
|
dzaima
|
2243fa76c1
|
better base case list
|
2023-07-19 21:56:35 +03:00 |
|
dzaima
|
eb46ec8d9c
|
rename __mulhi & __mul32
|
2023-07-19 21:54:12 +03:00 |
|
dzaima
|
700d69e7dd
|
unpack → zip & mzip; enable slash.singeli SIMD parts for NEON
|
2023-07-19 21:39:22 +03:00 |
|
dzaima
|
ba2e859dce
|
use existing unpackLo in neq.singeli
|
2023-07-19 20:56:08 +03:00 |
|
dzaima
|
19b35e1074
|
fix size comment
|
2023-07-19 20:11:14 +03:00 |
|
dzaima
|
9945711b5e
|
AVX2 i32 & i64 slash{} via widening load
|
2023-07-19 20:00:46 +03:00 |
|
dzaima
|
ff9bb258c2
|
more comments in slash.singeli
|
2023-07-19 18:50:01 +03:00 |
|
dzaima
|
48111d4873
|
extract iota{} for AVX-512
|
2023-07-19 17:24:20 +03:00 |
|
dzaima
|
a0797318ca
|
use has_simd & arch_defvw
|
2023-07-19 17:03:41 +03:00 |
|
dzaima
|
03c21112c2
|
make NEON builds work
|
2023-07-19 16:58:35 +03:00 |
|
Marshall Lochbaum
|
77188b8e73
|
Add clmul.singeli
|
2023-07-19 09:38:37 -04:00 |
|
Marshall Lochbaum
|
c4364aefa6
|
SSSE3 4-byte compress with half-width table
|
2023-07-19 08:15:53 -04:00 |
|
Marshall Lochbaum
|
ba837ba01b
|
Remove table-less where/compress methods, as they're not competitive
|
2023-07-19 07:22:55 -04:00 |
|
Marshall Lochbaum
|
64d65ae837
|
Never use generic dense compress methods if use_table: where is faster
|
2023-07-18 21:35:12 -04:00 |
|
Marshall Lochbaum
|
b0e0f210c6
|
2- and 4-byte Where with unpack and table
|
2023-07-18 21:10:39 -04:00 |
|
Marshall Lochbaum
|
93e1262864
|
Avoid using popcount primitive in Singeli if POPCNT isn't present
|
2023-07-18 16:52:08 -04:00 |
|
Marshall Lochbaum
|
6df283c379
|
Always increment by full popcount instead of two halves when splitting byte
|
2023-07-17 17:52:59 -04:00 |
|
Marshall Lochbaum
|
2f6a8e55a1
|
Always use vectors for for_special_buffered buffer copy
|
2023-07-17 16:52:10 -04:00 |
|
Marshall Lochbaum
|
8add95b7ab
|
Remove BMI2 where/compress methods
|
2023-07-17 16:20:30 -04:00 |
|
Marshall Lochbaum
|
f005169518
|
1- and 2-byte compress with table and SSSE3
|
2023-07-17 16:19:05 -04:00 |
|
Marshall Lochbaum
|
68978f7e10
|
Table-based 1- and 2-byte Where
|
2023-07-17 16:05:06 -04:00 |
|
Marshall Lochbaum
|
fc187afdf2
|
Extend 1-byte SSE2 Where to 2-byte and 4-byte with unpacked writes
|
2023-07-17 11:28:04 -04:00 |
|
Marshall Lochbaum
|
8b297ae2dc
|
Dedicated 32-bit Singeli where, taking index offset
|
2023-07-16 21:56:33 -04:00 |
|
Marshall Lochbaum
|
3bd8d1de68
|
Extend all Singeli Compress methods to do Where
|
2023-07-16 21:56:33 -04:00 |
|
Marshall Lochbaum
|
4415869496
|
Generic Singeli where implementation
|
2023-07-16 21:56:33 -04:00 |
|
Marshall Lochbaum
|
c484f8ee8d
|
Avoid UB from shifting by 64
|
2023-07-16 21:56:33 -04:00 |
|
Marshall Lochbaum
|
da5f1faa07
|
Merge BMI2 slash{} cases, with some simplifications
|
2023-07-16 21:56:33 -04:00 |
|
Marshall Lochbaum
|
b244ba98f5
|
Unify slash1{} and slash2{}
|
2023-07-16 21:56:33 -04:00 |
|
Marshall Lochbaum
|
f5121f6806
|
Thresholds for compress methods (versus sparse) defined in Singeli
|
2023-07-16 21:56:33 -04:00 |
|
Marshall Lochbaum
|
824bb04b4d
|
Plain SSE2 1-byte compress
|
2023-07-16 21:56:33 -04:00 |
|
Marshall Lochbaum
|
f852d12a5c
|
Generic Singeli compress implementation
|
2023-07-16 21:56:33 -04:00 |
|
Marshall Lochbaum
|
f36426031a
|
Slightly faster table-less compress method
|
2023-07-16 21:56:33 -04:00 |
|
Marshall Lochbaum
|
84a928863b
|
AVX-512 compress implementations
|
2023-07-16 21:56:33 -04:00 |
|
Marshall Lochbaum
|
80e93c41c9
|
Use new undefined{type,len} instead of alloca
|
2023-07-16 21:56:33 -04:00 |
|
Marshall Lochbaum
|
13b3bcd74b
|
Table-less AVX2 1-byte compress
|
2023-07-16 21:56:33 -04:00 |
|
Marshall Lochbaum
|
d956ba921b
|
Non-overwriting 1-byte and 2-byte compress/where
|
2023-07-16 21:56:33 -04:00 |
|
Marshall Lochbaum
|
8f4b1966cb
|
Non-overwriting AVX2 4-byte and 8-byte compress, using a buffer
|
2023-07-16 21:56:33 -04:00 |
|
Marshall Lochbaum
|
9010f648bb
|
Unify permutevar-based compress implementations
|
2023-07-16 21:56:33 -04:00 |
|
Marshall Lochbaum
|
0921fc2c62
|
AVX2 compress implementations using permutevar and lookup tables
|
2023-07-16 21:56:33 -04:00 |
|
Marshall Lochbaum
|
03d8919307
|
Add has='pclmul' option and avoid using broadcast
|
2023-07-16 21:56:33 -04:00 |
|
Marshall Lochbaum
|
871a81ca5f
|
BMI2 pext not-emulation in Singeli
|
2023-07-16 21:56:33 -04:00 |
|
Marshall Lochbaum
|
1314859a80
|
clmul-based pext emulation
|
2023-07-16 21:56:33 -04:00 |
|
Marshall Lochbaum
|
f315a6d3ea
|
Emulate pext instruction in Singeli
|
2023-07-16 21:56:33 -04:00 |
|
dzaima
|
3946f2cc87
|
use new Singeli builtins
|
2023-07-17 02:23:50 +03:00 |
|
dzaima
|
0601a86f56
|
don't special-case 2/𝕩 on NEON
|
2023-07-11 02:40:05 +03:00 |
|
dzaima
|
cb9f4dbbc1
|
remove debug include
:|
|
2023-07-10 19:19:55 +03:00 |
|
dzaima
|
cd7807fba0
|
NEON constrep
|
2023-07-10 17:11:15 +03:00 |
|
dzaima
|
bf89d2d561
|
a little size reduction on write_indices
|
2023-07-10 16:29:21 +03:00 |
|
Marshall Lochbaum
|
f6d1f9fcab
|
Move utilities from bins to appropriate files
|
2023-07-10 07:14:44 -04:00 |
|
Marshall Lochbaum
|
492e97e2ca
|
Right argument narrowing for numeric Bins
|
2023-07-10 07:14:44 -04:00 |
|
Marshall Lochbaum
|
1fa00c9c6f
|
Update bins implementation comments
|
2023-07-10 07:13:21 -04:00 |
|
Marshall Lochbaum
|
46c6d47055
|
Permutevar instead of shuffle for 4-byte vector binary search
|
2023-07-10 07:13:21 -04:00 |
|
Marshall Lochbaum
|
fc57e0012d
|
Shuffle-based 4-byte vector binary search
|
2023-07-10 07:13:21 -04:00 |
|
Marshall Lochbaum
|
af5ba0a2d2
|
Switch from Eytzinger to linear search on extra lanes
|
2023-07-10 07:13:21 -04:00 |
|
Marshall Lochbaum
|
64ae8f9afd
|
Slightly better blend pattern for >16-byte bit table
|
2023-07-10 07:13:21 -04:00 |
|
Marshall Lochbaum
|
c8d20fbf26
|
And 2-byte vector binary search on 4 lanes
|
2023-07-10 07:13:21 -04:00 |
|
Marshall Lochbaum
|
fe92f91ca1
|
2-byte vector binary search on 2 lanes
|
2023-07-10 07:13:21 -04:00 |
|
Marshall Lochbaum
|
d19df2693a
|
Merge 1-byte table code with normal bins_lookup
|
2023-07-10 07:13:21 -04:00 |
|
Marshall Lochbaum
|
f36dc7adba
|
Use max-scan instead of plus-scan for 1-byte Bins table
|
2023-07-10 07:13:21 -04:00 |
|
Marshall Lochbaum
|
8054597004
|
Handle up to 64 unique values in bit-table 1-byte Bins
|
2023-07-10 07:13:21 -04:00 |
|
Marshall Lochbaum
|
b62bd02bc0
|
Precomputed midpoint bits in vector binary search
Clang already optimized to this but it's more explicit
|
2023-07-10 07:13:21 -04:00 |
|
Marshall Lochbaum
|
7f5ba961c2
|
Use default bins_lookup if there's no AVX2
|
2023-07-10 07:13:21 -04:00 |
|
Marshall Lochbaum
|
1080236433
|
2-byte vector binary searches
|
2023-07-10 07:13:21 -04:00 |
|
Marshall Lochbaum
|
d665b90bbf
|
Slightly faster binary search pattern with a blend
|
2023-07-10 07:13:21 -04:00 |
|
Marshall Lochbaum
|
a711eb72eb
|
Table-based 2-byte Bins, using max-scan
|
2023-07-10 07:13:21 -04:00 |
|
Marshall Lochbaum
|
724f685a57
|
Cleanup
|
2023-07-10 07:13:21 -04:00 |
|
Marshall Lochbaum
|
2c9e07f33d
|
1-byte Bins up to 32 unique eleemnts by unique lookup then index
|
2023-07-10 07:13:21 -04:00 |
|
Marshall Lochbaum
|
81da9c586f
|
Table-based 1-byte Bins with >1-byte result
|
2023-07-10 07:13:21 -04:00 |
|
Marshall Lochbaum
|
0346ff7c2d
|
Use type of ≠𝕨 for Singeli Bins result and allocate outside Singeli
|
2023-07-10 07:13:21 -04:00 |
|
Marshall Lochbaum
|
e0621f99f8
|
Unroll vector binary searches for different search depths
|
2023-07-10 07:13:21 -04:00 |
|
Marshall Lochbaum
|
ed9e8b4057
|
Table-based 1-byte Bins implementations, including AVX2
|
2023-07-10 07:13:21 -04:00 |
|
Marshall Lochbaum
|
7161689196
|
Fix bin_search_vec over-writing
|
2023-07-10 07:13:21 -04:00 |
|
Marshall Lochbaum
|
302d637129
|
Allocate binary search result in Singeli, using i8 for vectors
|
2023-07-10 07:13:21 -04:00 |
|
Marshall Lochbaum
|
70249d8b64
|
In bins, promote to smallest common int type instead of i32
|
2023-07-10 07:13:21 -04:00 |
|
Marshall Lochbaum
|
ff9919dde2
|
AVX2 binary search on one lane of i8 (unused for now)
|
2023-07-10 07:13:21 -04:00 |
|
Marshall Lochbaum
|
ee84f9fe1f
|
4-way branchless binary search unrolling
|
2023-07-10 07:13:21 -04:00 |
|
Marshall Lochbaum
|
464a53463d
|
Generic Singeli version of 32-bit binary search
|
2023-07-10 07:13:21 -04:00 |
|
dzaima
|
5c7934387a
|
update Singeli submodule, match{} → same{}
|
2023-06-29 15:19:57 +03:00 |
|
dzaima
|
a67a19dd0b
|
move pair{{a,b}} expanding to base.singeli
|
2023-06-29 01:31:58 +03:00 |
|
dzaima
|
4ee8dfbbda
|
update Singeli submodule, use destructuring parameters
|
2023-06-28 00:59:28 +03:00 |
|
dzaima
|
7618dce2f3
|
fix return value of overflowed dyadic arith
|
2023-06-23 12:10:42 +03:00 |
|
dzaima
|
4dbe72ae03
|
properly indicate estimating Singeli instructions
|
2023-06-23 11:51:34 +03:00 |
|
dzaima
|
8f8380749b
|
generic Singeli builds
|
2023-06-16 11:12:15 +03:00 |
|
dzaima
|
5032c9a3ab
|
remove unnecessary 'over _ to'
|
2023-06-15 19:12:20 +03:00 |
|
dzaima
|
90e7537225
|
move maskedLoopPositive to @-based
|
2023-06-15 19:09:53 +03:00 |
|
dzaima
|
dee29a1a02
|
block → iter
|
2023-06-15 18:11:57 +03:00 |
|
dzaima
|
9da567cd57
|
switch to new Singeli block execution
|
2023-06-15 18:08:57 +03:00 |
|
dzaima
|
2da457dafa
|
fix el_half
|
2023-06-15 00:32:19 +03:00 |
|
dzaima
|
4260ef93b3
|
rename away underscores in __adds and __subs
plus add NEON addw, subw, and mulw (which is renamed from mul1)
|
2023-06-12 00:52:09 +03:00 |
|
dzaima
|
2a52dff482
|
@-forms of maskedLoop and muLoop
|
2023-06-12 00:52:09 +03:00 |
|
dzaima
|
fe8892ce6c
|
rearrange shrm/shlm args, slightly better NEON homMask{[16]u8}
|
2023-06-12 00:52:09 +03:00 |
|
dzaima
|
8542ba071d
|
homMaskX, merging multi-arg homMask
|
2023-06-07 18:14:18 +03:00 |
|
dzaima
|
c9e7dc9976
|
remove a debug include
|
2023-05-20 00:01:35 +03:00 |
|
dzaima
|
f6703df0b2
|
range calculation functions
|
2023-05-19 14:01:32 +03:00 |
|
dzaima
|
8bfe2b6b5b
|
fix unrolled integer |𝕩 (not used currently)
|
2023-05-19 13:15:51 +03:00 |
|
dzaima
|
616fd48785
|
base.singeli additions
|
2023-05-19 13:15:51 +03:00 |
|
dzaima
|
e4d222173d
|
a bunch of fixes for generic architecture & wasm
|
2023-05-16 00:07:48 +03:00 |
|
Marshall Lochbaum
|
53fb8db06f
|
SSSE3 support in bit-table code
|
2023-05-11 21:05:24 -04:00 |
|
Marshall Lochbaum
|
464dd27a37
|
SIMD table intialization for Index-of
|
2023-05-11 21:05:24 -04:00 |
|
Marshall Lochbaum
|
844b537593
|
Singeli 1-byte table implementations for generic architecture
|
2023-05-11 21:05:23 -04:00 |
|
Marshall Lochbaum
|
6c81fb3149
|
Make AVX2 deduplicate branchless
|
2023-05-11 21:04:58 -04:00 |
|
Marshall Lochbaum
|
1700d84740
|
AVX2 1-byte Deduplicate implementation
|
2023-05-11 21:04:58 -04:00 |
|
Marshall Lochbaum
|
9658104f3e
|
Unify AVX2 bit-table code between Member-of and Mark Firsts
|
2023-05-11 21:04:58 -04:00 |
|
Marshall Lochbaum
|
ba43dae908
|
Heuristic filtering when AVX2 Mark Firsts sees multiple new values
|
2023-05-11 21:04:58 -04:00 |
|
Marshall Lochbaum
|
9c7c6aabc5
|
AVX2 Mark Firsts implementation
|
2023-05-11 21:04:56 -04:00 |
|
Marshall Lochbaum
|
2fafe11d7c
|
Fix fill_bittab tail masking for t=0 and simplify
|
2023-05-11 20:59:53 -04:00 |
|
Marshall Lochbaum
|
e45231154c
|
Reverse lookup initialization for 1-byte Member-of
|
2023-05-11 20:59:53 -04:00 |
|
Marshall Lochbaum
|
0232f91582
|
AVX2 bit table Member-of
|
2023-05-11 20:59:52 -04:00 |
|
dzaima
|
03a28e4e34
|
fix float normalization from a •bit._cast result mutating the original
|
2023-05-11 22:39:59 +03:00 |
|
dzaima
|
300d217ee8
|
move SIMD constrep functions to a table
|
2023-05-09 00:14:14 +03:00 |
|
dzaima
|
56d1453185
|
use destructuring more in Singeli
|
2023-05-06 13:18:00 +03:00 |
|
dzaima
|
c567dff565
|
fix leading-axis operations on empty inputs
|
2023-04-30 19:15:46 +03:00 |
|
dzaima
|
1e11cf93c1
|
faster leading axis arithmetic
|
2023-04-30 17:27:07 +03:00 |
|
dzaima
|
aa5ed7cc7a
|
BB2B & BBB2B → FC1 & FC2
|
2023-04-29 15:31:31 +03:00 |
|
dzaima
|
34a4d48d95
|
make singeli assertions checked in debug mode
|
2023-04-28 15:10:08 +03:00 |
|
dzaima
|
187eea1197
|
use memcpy for non-tiny equal-size copying
|
2023-04-26 20:19:05 +03:00 |
|
dzaima
|
01b17ea0d9
|
remove now-unnecessary workaround for float constant
|
2023-04-21 15:46:54 +03:00 |
|
dzaima
|
a622a6761b
|
use vtestz/vptestz instead of movemask for mask-any checks
|
2023-04-15 15:10:58 +03:00 |
|
dzaima
|
712707d27b
|
integer avx2 bitwise operation definitions
mainly for reduced casts in C output
|
2023-04-15 15:00:57 +03:00 |
|
dzaima
|
722107e470
|
move makeOptBranch to base.singeli, use in search
|
2023-04-15 12:32:14 +03:00 |
|
dzaima
|
147d4530c1
|
slightly better overflow check for i8×i8→i8
|
2023-04-15 01:53:04 +03:00 |
|
dzaima
|
bbb9e7f0ed
|
don't overflow-check widening array-scalar cases when not needed
|
2023-04-15 01:19:09 +03:00 |
|
dzaima
|
1db746ea77
|
Singeli compile-time cdiv & low-stack @collect
|
2023-04-09 15:03:44 +03:00 |
|
dzaima
|
b66f628cff
|
tiny improvements to plus-scan
|
2023-04-09 12:09:52 +03:00 |
|
dzaima
|
52dc05f228
|
SIMD +`
|
2023-04-08 20:04:23 +03:00 |
|
dzaima
|
6a0385b44b
|
better Singeli abs & absu definitions
|
2023-04-08 19:23:55 +03:00 |
|
dzaima
|
c3fe3c5b42
|
more Singeli utilities, more Scan fixing
|
2023-04-07 21:09:46 +03:00 |
|
dzaima
|
b0d8bcb428
|
add argument passing to makeOptBranch
|
2023-04-06 22:41:20 +03:00 |
|
dzaima
|
897c46df76
|
aarch64 fold.singeli
|
2023-04-06 20:17:09 +03:00 |
|
dzaima
|
b3f3190028
|
SSE2 fold.singeli
|
2023-04-06 19:49:14 +03:00 |
|
dzaima
|
1d6b33d528
|
restrict fold_addw to integer input
|
2023-04-06 19:18:43 +03:00 |
|
dzaima
|
d13060f725
|
move fold to vfold
|
2023-04-06 19:05:38 +03:00 |
|
Marshall Lochbaum
|
9d7d330a03
|
Use AVX2 counting for 1-byte counting sort
|
2023-04-06 11:32:34 -04:00 |
|
Marshall Lochbaum
|
0e5b98c491
|
Return max from AVX2 counting function
|
2023-04-06 11:32:34 -04:00 |
|
Marshall Lochbaum
|
4b18466ae2
|
Clean up and simplify count.singeli; allow longer final block
|
2023-04-06 11:32:06 -04:00 |
|
Marshall Lochbaum
|
06b4f06e64
|
Move fold{} from squeeze.singeli to vecfold.singeli
|
2023-04-06 11:32:06 -04:00 |
|
Marshall Lochbaum
|
2ddcc14852
|
Use minimum in addition to maximum for AVX2 counting
|
2023-04-06 11:32:06 -04:00 |
|
Marshall Lochbaum
|
e6a3e846d9
|
Sum counts in groups of 4 when possible
|
2023-04-06 11:32:06 -04:00 |
|
Marshall Lochbaum
|
b655dd4771
|
AVX2 counting function for small-range 1-byte /⁼
|
2023-04-06 11:32:04 -04:00 |
|
dzaima
|
cba6ef505a
|
add usz option to build/build
|
2023-04-06 17:47:31 +03:00 |
|
dzaima
|
5492eae8c5
|
unrolling for single-element search
|
2023-04-06 15:42:10 +03:00 |
|
dzaima
|
876914d053
|
Singeli single-element search
|
2023-04-06 14:56:49 +03:00 |
|
dzaima
|
8b05cd243f
|
fix SSE2 unsigned comparisons
|
2023-04-05 13:47:16 +03:00 |
|
dzaima
|
7d1fcf2c3a
|
move &~ to base.singeli
|
2023-04-02 16:33:24 +03:00 |
|
dzaima
|
100a188545
|
fix aarch64 singeli
|
2023-04-02 15:39:42 +03:00 |
|
dzaima
|
00a5ddcb89
|
SSE2 squeeze
|
2023-04-02 15:04:00 +03:00 |
|
dzaima
|
e0a265472c
|
SSE2 extract{x,0} for [4]i32 and [2]i64
|
2023-04-02 12:10:18 +03:00 |
|
dzaima
|
9209ca5d6d
|
SSE2 copy.singeli
|
2023-04-02 01:53:16 +03:00 |
|
dzaima
|
5018cf9b2e
|
reduce unnecessary casts in C output
|
2023-04-01 23:04:55 +03:00 |
|
dzaima
|
9826201343
|
move neon.singeli type checks to w64/w128
|
2023-04-01 22:53:38 +03:00 |
|
dzaima
|
a62c21733e
|
SSE2 equal.singeli
|
2023-04-01 22:08:47 +03:00 |
|
dzaima
|
96ee73f644
|
enable Singeli monadic arith & comparisons on SSE2
|
2023-04-01 20:40:29 +03:00 |
|
dzaima
|
3a45eac1aa
|
separate SSE2, implement SSE2 dyarith & bitsel
also separate maskstore to homogeneous & top bit mask variants, and make blend require equal element widths
|
2023-04-01 20:40:23 +03:00 |
|
dzaima
|
dc2ac37e0a
|
arch-independent Singeli builds
|
2023-03-31 16:45:29 +03:00 |
|
Marshall Lochbaum
|
814a677676
|
Make transpose movement functions strided
|
2023-03-29 12:37:15 -04:00 |
|
Marshall Lochbaum
|
b829076271
|
Put CPU-size transpose functions in a table
|
2023-03-29 12:37:15 -04:00 |
|
Marshall Lochbaum
|
410d51501d
|
Check for AVX2 in Singeli transpose so it can build on non-x86 architectures
|
2023-03-29 12:37:15 -04:00 |
|
Marshall Lochbaum
|
bf04b3aab0
|
Move w128i and similar from sse3 and avx.singeli to base
|
2023-03-28 16:11:46 -04:00 |
|
Marshall Lochbaum
|
ebbddf9dcf
|
Move height/width 2 transposes to Singeli
|
2023-03-28 16:11:46 -04:00 |
|
dzaima
|
21b9ad5c3c
|
don't include debug.singeli
|
2023-03-27 17:53:01 +03:00 |
|