Commit Graph

673 Commits

Author SHA1 Message Date
dzaima
d5facc33ad some Singeli cleanup
shuf_ind's staying as such I guess; make it more clear when debug.singeli is left included
2025-03-06 05:32:22 +02:00
dzaima
267ddc4987 clarifying comments 2025-03-06 04:02:27 +02:00
Marshall Lochbaum
a11ed3d79a Mask out values past the end for strided +` overflow checks 2025-03-04 07:39:28 -05:00
Marshall Lochbaum
46300bcb51 Use scalar case for small-stride +` on <SSSE3 to avoid incorrectly overlapping vectors 2025-03-03 08:15:47 -05:00
Marshall Lochbaum
4072bde806 Strided scan with AVX2 [8]i32 permute if possible 2025-03-03 08:14:17 -05:00
Marshall Lochbaum
180c79e751 Strided +`, widening and re-trying on overflow 2025-03-03 06:54:40 -05:00
Marshall Lochbaum
87a7d066c8 Strided ⌊⌈ scans with shuffles 2025-03-03 06:54:40 -05:00
Marshall Lochbaum
360e4e8320 Save a word instead of writing to avoid stall for scan with 64<stride<128 2025-03-03 06:54:40 -05:00
Marshall Lochbaum
f3e0ea7531 Use CLMUL-based ≠` for power-of-two stride up to 64 2025-03-03 06:54:40 -05:00
Marshall Lochbaum
ee6b91be8a Basic strided ∧∨≠= scan implementations 2025-03-03 06:54:40 -05:00
Marshall Lochbaum
b03b26656d Fix usz=32 build 2025-03-03 06:54:40 -05:00
dzaima
445007b38c unify toLast and broadcast_last 2025-03-02 19:31:03 +02:00
dzaima
bdee96a995 remove old blend definitions 2025-02-27 05:49:16 +02:00
Marshall Lochbaum
eda1cd8b50 More tuning based on dzaima's measurements 2025-02-26 22:01:37 -05:00
Marshall Lochbaum
a520ff70a1 Fix some NEON performance issues for row scans 2025-02-26 21:52:49 -05:00
Marshall Lochbaum
422e63bc12 Non-CLMUL SIMD ≠` 2025-02-26 08:21:22 -05:00
Marshall Lochbaum
d85d69e759 Improve baseline for ⊣`˘ to beat non-AVX2 on length ≥64 2025-02-25 20:26:51 -05:00
Marshall Lochbaum
709712f03c Tuning; drop the scalar loose_mask branch for ∧∨ as it never seems faster 2025-02-25 19:33:26 -05:00
Marshall Lochbaum
b5ec2f5fa8 Extend loose_mask system to SSE and NEON (not always fast) 2025-02-25 19:28:51 -05:00
Marshall Lochbaum
fb413b1966 Enable vector max- min-, and wrapping plus-scan on NEON
Changes the results on NaNs, but they weren't consistent before
2025-02-24 22:08:49 -05:00
Marshall Lochbaum
317871db55 Extend unaligned <64-bit row scans from AVX2 to SSE, NEON 2025-02-24 21:47:46 -05:00
Marshall Lochbaum
b131914cbe Factor out some common code 2025-02-24 21:13:19 -05:00
Marshall Lochbaum
0973d9b499 Medium-row ⊣˘ and ≠˘ with mask-aware carry 2025-02-24 21:13:19 -05:00
Marshall Lochbaum
1fef51a39e AVX2 ∧ and ∨ with intermediate row sizes (64≤l<160) 2025-02-23 19:19:46 -05:00
Marshall Lochbaum
94e6b6cb3a Better formula for within-word masked ∧ and ∨ 2025-02-23 08:27:47 -05:00
dzaima
8c1040bd9f cleaner vr?(add|sub)hn NEON defs 2025-02-08 18:37:46 +02:00
dzaima
09f2980ebf more BMI and NEON defs 2025-02-08 17:36:44 +02:00
dzaima
bda9245ac3 another unnecessary tree_fold 2025-02-08 17:36:44 +02:00
dzaima
0d7a7652e3 better NEON all_hom{x:[16]u8} 2025-02-08 17:36:44 +02:00
dzaima
c792d47069 use Singeli a==b instead of a=(b) 2025-02-08 17:36:44 +02:00
dzaima
b12575722a better NEON any_hom
but clang undoes this sometimes :/ https://github.com/llvm/llvm-project/issues/125611
2025-02-08 17:36:44 +02:00
dzaima
72cf36334c make (any|all_(hom|top) accept mask or vl or multiple vectors
makes the previous commit superfluous, but still keeping it separate so that this one changes nothing
2025-02-08 17:36:44 +02:00
dzaima
341f3757e7 make all_hom{mask_none, vec} use simple path 2025-02-08 17:36:44 +02:00
dzaima
d17c6ebe8e actually fix AVX-512 more 2025-02-03 19:58:15 +02:00
dzaima
0bc491e931 fix AVX-512 more 2025-02-03 19:56:04 +02:00
dzaima
3a8f2a601a better NEON widening add/sub/mul definitions 2025-02-03 19:45:21 +02:00
dzaima
44d87fef78 fix AVX-512 build 2025-02-03 19:31:18 +02:00
dzaima
8c7c0227a5 first_hom, try_first_hom, popc_hom 2025-02-03 17:32:21 +02:00
dzaima
c64cdb2c61 make store_(blended|masked)_(hom|top) accept element pointer 2025-02-03 04:20:33 +02:00
dzaima
cd373e2ae6 remove (load|store)_low 2025-02-03 03:53:11 +02:00
dzaima
61565bfa17 define load_low/store_low in terms of vl-based load/store 2025-02-03 03:37:38 +02:00
dzaima
848813331a element-pointer-based vector loads & stores 2025-02-03 03:17:23 +02:00
dzaima
91800ddd1e more direct mask_none all-bits-zeroes check 2025-02-03 03:05:58 +02:00
dzaima
25faa71995 better NEON hom_to_int_ext 2025-02-03 02:37:07 +02:00
dzaima
afc4aa81fa more complete NEON widening multiply/add/subtract 2025-02-03 02:37:07 +02:00
dzaima
49dd6e394a mask.singeli loop renames 2025-02-03 02:13:39 +02:00
dzaima
92f40ddbe2 mask.singeli def renames
more bits of renames
2025-02-03 02:13:39 +02:00
dzaima
b6578e43a1 renames of the rest of base.singeli 2025-02-03 02:13:39 +02:00
dzaima
189ffa7d1f bitops.singeli renames 2025-02-03 02:12:58 +02:00
dzaima
f409ee8729 fix generic arch 2025-02-03 02:11:00 +02:00