Commit Graph

1450 Commits

Author SHA1 Message Date
Marshall Lochbaum
89c1b39c6d Don't allow 0 as a width for •bit 2022-10-17 09:39:38 -04:00
Marshall Lochbaum
698c902564 Implement scalar extension for •_bit 2022-10-17 09:39:38 -04:00
Marshall Lochbaum
022ef64f6b Add NOUNROLLs to bitwise functions 2022-10-17 09:39:38 -04:00
Marshall Lochbaum
80f8ac9643 2-argument •bit operations 2022-10-17 09:39:38 -04:00
Marshall Lochbaum
8f5259e77d Implement 1-argument •bit operations 2022-10-17 09:39:38 -04:00
dzaima
2a17d87572 calculate •FFI allocation layout ahead-of-time 2022-10-16 14:16:34 +03:00
dzaima
83af05d274 fix building on gcc≤10 2022-10-10 13:53:56 +03:00
dzaima
2eecc0feda squeeze *u8/*u16/*u32 result
it has to sometimes be one size up to accommodate for the upper unsigned range, but often (?) it should fit fine in the signed range of its type
2022-10-08 19:59:03 +03:00
dzaima
ac041d37f4 fix WARN_SLOW build 2022-10-08 19:30:08 +03:00
dzaima
7e1c9b50cd initial struct support 2022-10-08 19:08:20 +03:00
dzaima
702d4e979d various utility changes 2022-10-08 19:03:41 +03:00
dzaima
529d2abae4 add warning about miscompilation for x86 on gcc 2022-10-08 14:41:44 +03:00
dzaima
7bda795365 fix gcc warnings about pointer casts in 32-bit builds 2022-10-07 12:57:59 +03:00
dzaima
abcb575a53 simplify bit boolean constant replicate start 2022-10-04 22:11:20 +03:00
Marshall Lochbaum
ce74e36a19 Fix lots of missing casts for function calls 2022-09-30 20:20:38 -04:00
dzaima
82ac059b75 disable clmul ≠` when pclmul not available 2022-09-30 20:06:52 +03:00
Marshall Lochbaum
cca64bba70 Move nescan.c into md1.c and constrep.c into slash.c 2022-09-30 11:40:37 -04:00
Marshall Lochbaum
47cdf02877 Build Singeli files with a filename prefix 2022-09-30 11:35:25 -04:00
Marshall Lochbaum
cad566d547 Not-equals scan with carry-less multiply 2022-09-29 20:39:46 -04:00
Marshall Lochbaum
acc200222d Move constant Replicate Singeli code to its own file 2022-09-29 20:33:09 -04:00
Marshall Lochbaum
582afe33c9 Merge 3 to 7 replicate float with other types: shuffle instead of permute 2022-09-29 20:12:45 -04:00
Marshall Lochbaum
29886f355a Combine small-replication shuffle vector tables across types 2022-09-29 19:58:14 -04:00
Marshall Lochbaum
e407286185 BMI2-based constant boolean Replicate for 𝕨<=52 2022-09-28 21:56:57 -04:00
Marshall Lochbaum
0c0d967dc3 Adjust Table thresholds for fast constant Replicate 2022-09-28 17:18:55 -04:00
Marshall Lochbaum
09aba9bc37 slash.singeli is only used with __BMI2__ for now 2022-09-28 17:18:42 -04:00
Marshall Lochbaum
4836f70e0d Simplify rep_const_broadcast, removing unused kv==0 case 2022-09-28 14:14:39 -04:00
Marshall Lochbaum
d28a74b572 Move 4-shuffle data to a table 2022-09-28 13:35:08 -04:00
Marshall Lochbaum
9947de0146 Performance improvements when compiling slash.singeli 2022-09-27 22:00:59 -04:00
Marshall Lochbaum
db3e0a6324 Move all the algorithm decision logic into main rep_const and simplify 2022-09-27 22:00:59 -04:00
Marshall Lochbaum
c430922a7e Use shared functions and shuffle array for sizes 3 to 7 in constant Replicate 2022-09-27 22:00:59 -04:00
Marshall Lochbaum
68aeb0f7cb Add large-constant replicate method always using 4 shuffles 2022-09-27 22:00:59 -04:00
Marshall Lochbaum
7069a60453 Handle all constant Replicate in Singeli 2022-09-27 22:00:59 -04:00
Marshall Lochbaum
15c405e7bf Factorize constant replicate lengths under 32 2022-09-27 22:00:59 -04:00
Marshall Lochbaum
7535d768dd Singeli shuffle-based code for constant replicates <=7 2022-09-27 22:00:59 -04:00
Marshall Lochbaum
851f50635e Some simplifications in base.singeli 2022-09-27 22:00:59 -04:00
dzaima
46501ac819 update build & packaging information
closes #45
2022-09-27 17:53:06 +03:00
dzaima
d3ed718a6d branchless sparse Where block size bound was too big 2022-09-26 23:12:17 +03:00
dzaima
bd823839fe fixes for / 2022-09-25 18:45:46 +03:00
dzaima
1fcd5295eb slight attempt at improving ↕list 2022-09-25 14:55:49 +03:00
dzaima
5c87c291f9 refactor unroll/vectorization disabling macros 2022-09-25 14:49:57 +03:00
dzaima
2bb6750d7d better bitarr fill 2022-09-24 19:31:46 +03:00
dzaima
608489aed1 fix gcc singeli build 2022-09-24 19:30:10 +03:00
dzaima
37a3979c86 clean up generic unit reshape case 2022-09-24 19:20:32 +03:00
Marshall Lochbaum
e8e10790f8 Fast array reshape 2022-09-23 17:40:30 -04:00
Marshall Lochbaum
218a8b069e Rework reshape of singleton 2022-09-23 15:32:27 -04:00
Marshall Lochbaum
8e24da8e8e Adjust Replicate thresholds 2022-09-23 08:22:41 -04:00
Marshall Lochbaum
8a13bf9476 Constant boolean replicate 2022-09-22 22:32:52 -04:00
Marshall Lochbaum
7f6cf06eea Merge scan-based sparse Indices/Replicate code with macros 2022-09-22 22:09:56 -04:00
Marshall Lochbaum
d647978c8f Type-independent Replicate by constant 2022-09-22 21:42:18 -04:00
Marshall Lochbaum
ec12dd4502 Switch to forward inclusive sums for all radix sorting, and use Singeli
Removes SWAR for 8-bit counts, since reverse sorting uses negatives
2022-09-22 16:44:05 -04:00
Marshall Lochbaum
8e1d8bb42c Use Singeli max/min scan for Indices and Sort 2022-09-22 15:17:54 -04:00
Marshall Lochbaum
bc4f5167fb Constant replicate using plus-scan 2022-09-21 19:40:04 -04:00
Marshall Lochbaum
6ed3c18389 Implement SIMD wrapping plus-scan for Replicate 2022-09-21 19:40:04 -04:00
dzaima
c42f0fd699 revert de4fca85 2022-09-22 01:18:41 +03:00
dzaima
de4fca859f extract arr_shCopy 2022-09-22 00:51:04 +03:00
dzaima
06fe437520 bitarr reversing 2022-09-22 00:38:09 +03:00
dzaima
1e3089ceaa fast ⍉𝕩 when 2=≠𝕩 2022-09-20 22:29:32 +03:00
dzaima
7c4673f972 more num_squeezeChk 2022-09-20 19:27:23 +03:00
dzaima
42ae82eb1f simpler slash_ucw !elInt(w) case 2022-09-20 19:14:02 +03:00
dzaima
42e36851b9 more cleanup 2022-09-20 18:57:22 +03:00
dzaima
f231a30057 fix 𝕨⊔0 2022-09-20 17:36:55 +03:00
dzaima
cec5b7dc6c slash.c cleanup 2022-09-20 17:32:12 +03:00
Marshall Lochbaum
01f73dc83b Move usum and bit_sum from numarr.h to stuff.c 2022-09-19 19:38:26 -04:00
Marshall Lochbaum
ac4729bb29 Use grouped compress for all byte sizes if the number of groups is small enough 2022-09-19 19:31:44 -04:00
Marshall Lochbaum
11e3db1787 Can't call harr withFill before adding data to array 2022-09-19 11:15:47 -04:00
Marshall Lochbaum
05401547c1 Grouped compress for odd cell widths 2022-09-19 10:52:26 -04:00
Marshall Lochbaum
9af77e63ee Split up partitioning loop in Group for rank 1 and rank>1 cases 2022-09-18 16:43:19 -04:00
Marshall Lochbaum
12c4fd0b07 Vectorizable usum code for i8, i16, i32 2022-09-18 16:15:20 -04:00
Marshall Lochbaum
d525acb51e Merge branch 'master' into cellwidth 2022-09-18 15:26:34 -04:00
dzaima
9453a9b665 remove old loops for non-bitarr 𝕨 consisting of 0 and 1 from 𝕨/𝕩 2022-09-18 22:12:07 +03:00
dzaima
43ddb9759c inline part of depth 2022-09-18 21:58:53 +03:00
dzaima
dd56cfab20 allow using picked element of ⌾(n⊸⊑) in-place 2022-09-18 21:00:51 +03:00
dzaima
770f7b2f0c check type directly in pick_ucw 2022-09-18 20:17:48 +03:00
dzaima
c0cf58ffc2 use existing function for 8-bit utf8Decode 2022-09-18 20:17:20 +03:00
Marshall Lochbaum
cae65947cd Apply fast Replicate code whenever the cell size is right 2022-09-17 21:01:17 -04:00
Marshall Lochbaum
ea1367e639 Handle cell size 0 correctly in cellWidthLog() 2022-09-17 21:01:13 -04:00
Marshall Lochbaum
c72b9b5abd Redo replicate with sparse and dense cases 2022-09-17 16:17:47 -04:00
Marshall Lochbaum
5f196c49d9 Extend sparse and dense where to all cases fitting in i32s 2022-09-16 22:01:56 -04:00
Marshall Lochbaum
fb1230bcc2 Sparse Indices prototype 2022-09-16 22:01:56 -04:00
Marshall Lochbaum
26c3dbfeea Start using type-independent utilities in compress() 2022-09-16 22:01:56 -04:00
Marshall Lochbaum
3505e1515e Extend Group where 𝕨 is an integer list to handle higher-rank 𝕩 2022-09-16 22:01:56 -04:00
Marshall Lochbaum
21033fa355 Move Group to its own file 2022-09-16 22:01:56 -04:00
Marshall Lochbaum
0b1ded14e0 Type-independent Reverse 2022-09-16 22:01:56 -04:00
Marshall Lochbaum
b84a2d4e1f Special-casing for length 1 in self-search functions 2022-09-16 22:01:56 -04:00
Marshall Lochbaum
57d33990e3 Make self-search special code only depend on cell size 2022-09-16 22:01:56 -04:00
dzaima
9c5396e711 consistently output WARN_SLOW information on stderr 2022-09-12 20:12:32 +03:00
dzaima
89503ba1c1 don't not check top bits in LIKELY & RARE 2022-09-12 19:51:07 +03:00
dzaima
889c520251 move slash_im setting 2022-09-12 18:32:56 +03:00
dzaima
a46ec7343e not slow ⍉bitarr, fix ⊢⌾⍉ 2‿3‿4⥊↕24 2022-09-12 18:27:18 +03:00
dzaima
32d533b6e2 don't print left argument of ⊑ if it's large 2022-09-12 18:21:04 +03:00
dzaima
47c4a53da4 fix WARN_SLOW build 2022-09-12 18:19:05 +03:00
Marshall Lochbaum
6d372959e8 Just return 𝕩 for an all-ones compress 2022-09-11 21:48:31 -04:00
Marshall Lochbaum
9b17701c66 Sparse 1- and 2-byte compress, with blocking, if total sum is low enough 2022-09-11 20:19:20 -04:00
Marshall Lochbaum
c796670549 Faster trailing zero trim, and apply it to all cases in compress() 2022-09-11 20:19:20 -04:00
Marshall Lochbaum
2baa88ad31 Compress for 4-byte and 8-byte data using index blocks 2022-09-11 18:00:29 -04:00
Marshall Lochbaum
ab25b08f84 Move compress (bool/list) to its own function 2022-09-11 16:32:41 -04:00
Marshall Lochbaum
819899c745 Implement f64 Where with u16 blocks 2022-09-11 16:32:41 -04:00
Marshall Lochbaum
fda3efe217 More macros for Where 2022-09-11 15:31:23 -04:00
Marshall Lochbaum
0d6894ddbc Fix broken non-Singeli dense i32 Where 2022-09-11 15:15:56 -04:00
Marshall Lochbaum
4bc5350747 Branchless sparse i16 Where 2022-09-11 11:00:17 -04:00
Marshall Lochbaum
1f40d36712 Separate where into its own function and split different types completely 2022-09-11 08:31:20 -04:00
Marshall Lochbaum
638121c054 Use blocked method for i32 Where with or without Singeli 2022-09-11 07:57:14 -04:00
Marshall Lochbaum
4999758497 Branchless i32 sparse Where 2022-09-11 07:57:01 -04:00
Marshall Lochbaum
017fcaea2a Move slash functions to a separate file 2022-09-10 09:58:42 -04:00
Marshall Lochbaum
bb3ecdca6a Sparse Where 2022-09-10 09:12:16 -04:00
Marshall Lochbaum
ae9817fd0d Fast path for / with empty result, and faster non-Singeli Where 2022-09-10 09:02:17 -04:00
Marshall Lochbaum
d8abc4ef7e Separate handling for ⊔ when 𝕨 changes value rarely 2022-09-09 18:11:12 -04:00
Marshall Lochbaum
ef2dee9a4d Special case data movement for ⊔ on sorted 𝕨 2022-09-09 13:21:08 -04:00
Marshall Lochbaum
569dcacac1 Do Group's range check and ¯1 counting on 1- or 2-byte ints
Doesn't vectorize, but at least it speeds up filtering later
2022-09-09 08:58:23 -04:00
Marshall Lochbaum
1e143644b6 Filter out ¯1s in Group with / if there are enough of them 2022-09-08 21:00:15 -04:00
dzaima
e266fbd09e basic float monadic arith loops, incl. -fno-math-errno 2022-09-08 23:18:47 +03:00
dzaima
2358436b89 more efficient spreadBits{[8]u32, u8} 2022-09-08 21:51:25 +03:00
dzaima
d3a1fee437 singeli bit_sel 2022-09-08 21:39:51 +03:00
dzaima
d60713225b just use u64 in bitsel 2022-09-08 20:25:09 +03:00
dzaima
1619b6087b mild optimization of v_set argument consumption 2022-09-08 20:05:13 +03:00
dzaima
3ccef1fe86 ⊔𝕩 → ⊔⟜(↕≠)𝕩 2022-09-08 14:52:19 +03:00
dzaima
59cadb06fe fix ⟨⟨⟩⟩⊏⟨⟩ incorrectly erroring
incl. ⟨⟨⟩,⟨⟩⟩⊏0‿0⥊⟨⟩, ⟨⟨⟩⟩⊏0‿0⥊⟨⟩, etc
2022-09-08 00:56:31 +03:00
dzaima
66d32e0acb fast exit for depth-2 𝕨 in 𝕨⊏𝕩 2022-09-08 00:47:25 +03:00
dzaima
96ca9092ba attempt at better bit_sel dispatch 2022-09-08 00:37:44 +03:00
dzaima
234443a17c src/README.md updates 2022-09-08 00:03:42 +03:00
dzaima
59e947cc20 more consistent type checking & conversion functions 2022-09-07 23:56:03 +03:00
dzaima
734e9fc116 better type checking helpers 2022-09-07 23:38:51 +03:00
dzaima
2299c8094e make gcc scream less 2022-09-07 20:28:45 +03:00
dzaima
0e306ca149 use WRAP instead of manual index management 2022-09-07 20:22:26 +03:00
dzaima
10004b82f7 make 1.2‿3.4⊏≍˘"abcd" error 2022-09-07 19:53:31 +03:00
dzaima
94e6168319 don't read past the end of array even if the value isn't used
bit_sel still uses it
2022-09-07 19:41:22 +03:00
dzaima
5d660cbf19 deduplicate hashmap size doubling function 2022-09-07 19:32:02 +03:00
dzaima
1a583725be use TALLOCP in other places 2022-09-07 17:59:17 +03:00
dzaima
b784dac9e1 make clang not go crazy 2022-09-07 00:27:23 +03:00
Marshall Lochbaum
a43a42e4d1 Select from small boolean list by copying to bytes 2022-09-06 16:34:08 -04:00
Marshall Lochbaum
f877a45a63 Vectorize range checks for 1- and 2-byte indices 2022-09-06 16:34:08 -04:00
Marshall Lochbaum
4a8244f2c1 Faster selection from boolean list 2022-09-06 16:08:16 -04:00
Marshall Lochbaum
55263bcbc4 Handle bit selection from arrays with under 2 elements 2022-09-06 16:08:16 -04:00
dzaima
1c279a0a20 fast bitarr×intarr 2022-09-06 22:47:16 +03:00
dzaima
a90e7de997 simpler atom-array arith on length 0 inputs 2022-09-06 18:24:49 +03:00
dzaima
311aa74303 simpler bitsel for ∨ 2022-09-06 17:31:42 +03:00
dzaima
ce1c81219e manual wideness check 2022-09-06 17:23:57 +03:00
dzaima
0b4259559c include errno.h in file.c unconditionally 2022-09-06 00:08:55 +03:00
dzaima
bffe16d6e9 fix overflowed & float functions 2022-09-05 23:23:51 +03:00
dzaima
c0b2164dc8 new array-atom arith 2022-09-05 22:52:53 +03:00
dzaima
629076d001 new ⟨⟩↕0 behavior & fix /⁼large_i8arr 2022-09-05 22:40:40 +03:00
dzaima
7f00d54372 rearrange arithd.c a bit more 2022-09-04 00:35:58 +03:00
Marshall Lochbaum
7792c60180 Fix unnecessary errors with computed shape 0, such as 1e8‿⌊‿1e8⥊↕5 2022-09-03 14:41:28 -04:00
Marshall Lochbaum
97bfacec44 Fix hang in •rand.Subset caused by moving wi==0 case into wi==xi 2022-09-03 14:41:28 -04:00
Marshall Lochbaum
44c0baee05 No need to initialize the negative half of the counts table 2022-09-03 14:41:28 -04:00
Marshall Lochbaum
37af32d95c Faster /⁼ for boolean and long 1-byte and 2-byte 𝕩 2022-09-02 14:31:07 -04:00
dzaima
0139c5f58d separate dyadic arith cases 2022-09-02 14:01:35 +03:00
dzaima
a637adadd9 rearrange arithd.c in preparation for separating its cases 2022-09-02 13:10:04 +03:00
dzaima
76141f6fe6 reduce lifetime of e in dyArith_AA 2022-09-01 22:45:30 +03:00
dzaima
1b8bd0707e make dyarith array-array dispatch its own function 2022-09-01 22:22:13 +03:00
dzaima
bd04e38a5e use existing copy functions for arr_join_inline 2022-09-01 19:52:51 +03:00
dzaima
90dd740bfc use cpyHArr instead of a getter loop 2022-09-01 19:25:20 +03:00
dzaima
dad47cf391 move arith_recd to a noinline function 2022-09-01 18:51:02 +03:00
dzaima
f758a3f1f6 proper argument name 2022-09-01 18:40:48 +03:00
dzaima
1c43ad6431 squeeze •rand.Subset result 2022-09-01 18:25:10 +03:00
dzaima
e72c7dc937 faster ÷ ⋆ √ | ⋆⁼ on i8 & i16 arrays 2022-09-01 16:06:52 +03:00
dzaima
5cfa89ad5a separate functions for comparison scalar & array cases 2022-09-01 15:06:34 +03:00
dzaima
72f25dad54 bitarr ↕1 and ↕2 2022-09-01 13:29:03 +03:00
dzaima
7d716d5ce0 elInt 2022-09-01 11:17:49 +03:00
dzaima
203916b44f error on non-numbers in +𝕩 2022-09-01 11:16:42 +03:00
Marshall Lochbaum
76c93d85e1 Dyadic 32-bit / based on 8-bit monadic / 2022-08-31 16:11:52 -04:00
Marshall Lochbaum
1e0cf78fd0 Implement 4-byte where with blocks of 2-byte where 2022-08-31 16:11:52 -04:00
Marshall Lochbaum
6f02705d9f Make small-range Grade code style more like radix code 2022-08-31 16:11:52 -04:00
Marshall Lochbaum
758c174cae Optimistic special case to quickly invert permutations with ⍋ 2022-08-31 16:11:52 -04:00
Marshall Lochbaum
a42335af4f Use or-equals for dyadic ∊ when 𝕩 is small and arguments are flat 2022-08-31 16:11:52 -04:00
Marshall Lochbaum
15b444540e Extend self-search typed code to characters by treating as numbers 2022-08-31 16:11:52 -04:00
Marshall Lochbaum
9028ebfe8b Native Windows (↕) 2022-08-31 16:11:52 -04:00
dzaima
88f73d2585 fix comment & add note 2022-08-31 22:22:03 +03:00
dzaima
9775339e2c squeeze result of ⌊ and ⌈ 2022-08-30 00:18:25 +03:00
dzaima
ce1032f80d second instruction shouldn't have a swap requirement anymore 2022-08-29 23:09:47 +03:00
dzaima
8ea2352a7b clear out swap table after first instruction generation 2022-08-29 23:08:38 +03:00
dzaima
70ee775a33 fix i16arr+i8arr overflow 2022-08-29 22:59:12 +03:00
dzaima
39a0a894e2 correct char-char→signed int overflow checking 2022-08-29 22:48:46 +03:00
dzaima
b37f620889 disable manual array F character loops when not running singeli 2022-08-29 19:46:41 +03:00
dzaima
78e5799147 merge dyarith.singeli and dyarith2.singeli 2022-08-29 19:18:20 +03:00
dzaima
777c5cc1a5 rename things 2022-08-29 19:05:34 +03:00
dzaima
ce5ece34e1 new arith 2022-08-28 23:28:06 +03:00
dzaima
3c1ef1c9a2 use elNum 2022-08-28 16:44:21 +03:00
Marshall Lochbaum
f80d3ce263 Branchless integer binary search 2022-08-28 09:16:25 -04:00
Marshall Lochbaum
139faee0a1 Unify integer and character Bins 2022-08-28 09:16:09 -04:00
Marshall Lochbaum
9376e02ecb Boolean sorting 2022-08-27 15:44:25 -04:00
Marshall Lochbaum
e027aca0cf Radix grades 2022-08-27 15:16:20 -04:00
Marshall Lochbaum
36e54d1a39 1-byte radix with length ==256 doesn't work because of SWAR overflow when descending 2022-08-27 11:10:17 -04:00
Marshall Lochbaum
4ec83e51a6 Merge sort.h into grade.h 2022-08-27 10:59:00 -04:00
Marshall Lochbaum
9d59dff522 4-byte sorting: insertion and radix 2022-08-26 22:04:32 -04:00
Marshall Lochbaum
f946a3de41 2-byte sorting: insertion, radix, counting 2022-08-26 22:04:32 -04:00
Marshall Lochbaum
5034e55c79 Move Sort to template file sort.h (for up/down) like Grade 2022-08-26 22:04:32 -04:00
Marshall Lochbaum
a0a4ecadc7 1-byte sorting: insertion, bucket, counting 2022-08-26 22:04:32 -04:00
dzaima
5a162c7929 macos-specific sub-second file times 2022-08-26 22:46:00 +03:00
dzaima
2939395906 fallback file time getting method 2022-08-26 22:31:10 +03:00
dzaima
81e09956d3 •file.Size, make •file.List decode UTF-8
invalid UTF-8 is a problem for the future
2022-08-26 13:37:51 +03:00
dzaima
484158318a explicit JIT_ENABLED macro independent from JIT_START 2022-08-26 10:16:45 +03:00
dzaima
b16378bef6 add thing that was previously non-existent 2022-08-26 10:16:16 +03:00
dzaima
1927cb5756 implement ⍷𝕩 with (∊𝕩)/𝕩 2022-08-25 23:17:00 +03:00
dzaima
398a66ed94 fix c0 offset 2022-08-25 22:44:31 +03:00
dzaima
20a15097b4 remove non-existent thing 2022-08-25 22:33:38 +03:00
dzaima
d12a53fd08 •file.Created, •file.Accessed, •file.Modified 2022-08-25 22:29:03 +03:00
dzaima
905a9f78d4 {raw⇐1} •SH 𝕩 2022-08-25 22:27:35 +03:00
Marshall Lochbaum
e8e12e2d8f Another allocation improvement 2022-08-25 14:09:10 -04:00
Marshall Lochbaum
34950339c2 Improve radix+table allocation layout 2022-08-25 14:00:28 -04:00