Commit Graph

3193 Commits

Author SHA1 Message Date
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
dzaima
5910c93fcb silence some warnings & errors in various build types 2023-11-13 12:54:49 +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
7b79dfc94e Update search implementation comments 2023-11-09 15:20:50 -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
52bca6a55c Multiple IndexOfOne to search for a few values in a large array 2023-11-06 12:16:59 -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
0391cf4ca3 Fast number-character (no matches) searches 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
ad574d2269 refactor & document #define-s, always-available ')gc log' and ')mem log' 2023-10-31 03:16:48 +02:00
dzaima
08c4627686 fix dense case of •rand.Subset not updating seed 2023-10-30 17:03:38 +02:00
dzaima
a4befbd8bf FFI: check for 𝕨 being present when required 2023-10-29 01:01:48 +03:00
dzaima
7ffd744375 reorganize file writing
fixes some unclosed file descriptors & files being made on an invalid argument
2023-10-28 19:27:00 +03:00
dzaima
b6594008cd fix non-Singeli builds 2023-10-26 17:32:12 +03:00
dzaima
3775cd0025 typo 2023-10-22 15:18:39 +03:00
dzaima
577442449d inverses for •math.Atan2, •math error tests 2023-10-22 14:33:51 +03:00
dzaima
1ec48bb761 cleanup
makefile doesn't care about emcc anymore
2023-10-21 14:46:41 +03:00
dzaima
4322303031 Fix 2‿2↕3‿3‿3⥊↕27 2023-10-12 12:43:08 +03:00
dzaima
9c68e67544 fix compilation error when targeting AVX1-only 2023-10-07 13:22:27 +03:00
dzaima
e7b87f669f fix arr÷negativeZero, set proper float expected values 2023-09-21 19:03:30 +03:00
dzaima
f6a9c30889 •internal.HeapStats 2023-09-18 23:38:06 +03:00
dzaima
df0ccdf2d7 add error message on missing posix_spawn support in make for-build 2023-09-17 13:39:22 +03:00
dzaima
299168fb16 fast numarr÷scalarPowOf2 2023-09-12 23:57:50 +03:00
dzaima
5efd90cc91 rename elWidthLogBits to something less long & add byte variant 2023-09-12 19:58:56 +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
ec14d45c50 round up pointers in self-search allocs 2023-08-25 04:03:25 +03:00
dzaima
81a291f860 round up some pointers 2023-08-25 03:47:05 +03:00
dzaima
f0d6a65240 move unaligned load/store helpers to stuff.h
also replace a NULL with "" to make iBuf+0 not be UB
2023-08-25 03:24:42 +03:00
dzaima
8975f6af00 fast 1|x 2023-08-24 21:32:35 +03:00
dzaima
3e6e158696 native 𝕨⍷𝕩 when 1≥=𝕨 and 2≥=𝕩 2023-08-24 19:46:57 +03:00
dzaima
c5b98ea7a1 apparently LLVM actually uses pointer type to determine alignment 2023-08-20 22:57:30 +03:00
dzaima
6eaa9238bc separate BSDs 2023-08-20 19:33:11 +03:00
dzaima
34d4fd6433 more explicit loadu/storeu 2023-08-20 00:18:09 +03:00
dzaima
1bb686a9ff fix UB in grade.h 2023-08-19 21:48:11 +03:00
dzaima
2732becf50 global STR0/STR1 definitions 2023-08-19 20:12:53 +03:00
dzaima
721dccf636 fix FFI integer overflow check on ARM
clang optimizes a raw f!=(u8)f to like f!=(u32)f on ARM which changes behavior (we're technically using UB here, but there's no reasonable alternative); use q_ functions that know how to work around this
2023-08-19 20:12:53 +03:00
dzaima
25c2629842 •platform
incl. adding support for REPL completion of •a.b.c (i.e. >1 '.')
2023-08-19 18:25:52 +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
dzaima
df56f6b2fc fix 𝕨•FLines𝕩 with invalid elements in 𝕩 2023-08-13 03:51:06 +03:00
Marshall Lochbaum
2dd3a0fdfa Boolean compress implementation comments 2023-08-07 15:33:37 -04:00
Marshall Lochbaum
4e9745688b Use generic boolean Compress as the sparse case with Singeli 2023-08-07 13:47:58 -04:00
Marshall Lochbaum
a7908a10b0 Faster, sparse, non-Singeli boolean Compress 2023-08-07 12:26:40 -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
7767cf933f Remove boolean Compress overallocation: not needed with w masked off 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
7fe1ab930a FFI: permit 𝕨≡⟨⟩, require 𝕩≡⟨⟩ if no arguments are on 𝕩, check list rank 2023-08-05 16:13:07 +03:00
dzaima
682d5986d8 slightly more accurate trailing newline removal for •GetLine 2023-08-04 21:09:45 +03:00
dzaima
a1e4f9bd6f remove multiple trailing newline characters from •GetLine
Windows adds \r\n, and without this the \r stays
2023-08-04 20:52:07 +03:00
dzaima
8e35241e47 Better error messages for unknown namespace key 2023-08-03 22:54:38 +03: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
627a7e0771 more FFI error checking, plus bugfixes 2023-07-28 15:25:06 +03:00
dzaima
1bc96f5557 extract u8/u16/u32/f32 reading functions 2023-07-28 14:02:22 +03:00
dzaima
1454ca3a1a expand & test FFI error checking 2023-07-28 13:59:25 +03:00
dzaima
79f72d84b8 extract unsigned & f32 copying functions in ffi.c 2023-07-28 13:41:03 +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
dzaima
6930bc34b6 further update slash.c implementation comments 2023-07-19 16:51:24 +03:00
Marshall Lochbaum
77188b8e73 Add clmul.singeli 2023-07-19 09:38:37 -04:00
Marshall Lochbaum
301a23fb1f Update where/compress implementation comments 2023-07-19 09:35:40 -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
6305a3bd50 change error message of failed path_abs 2023-07-16 16:31:10 +03:00
dzaima
cf6a290e5c •file.RealPath 2023-07-16 01:42:30 +03:00
dzaima
d1e511bebd add padding before allocations & document it 2023-07-13 16:20:37 +03:00
dzaima
9cfc3f3f25 various changes on filling arrays with the same element 2023-07-12 16:23:03 +03:00
vylsaz
e4542f70a6 Implement •term.CharN and •term.RawMode for Windows 2023-07-11 03:15:48 +00:00
vylsaz
ce255c4a53 Enable •file.CreateDir on Windows 2023-07-11 01:11:28 +00:00
dzaima
0601a86f56 don't special-case 2/𝕩 on NEON 2023-07-11 02:40:05 +03:00
dzaima
56a1fc3637 use float getting functions for getting floats 2023-07-10 23:48:07 +03:00
dzaima
9b0299d1a5 fix (<1)≠`5⥊1 2023-07-10 23:25:28 +03:00
dzaima
53266ffd88 fix (<1)⌈`↕10 2023-07-10 23:21:36 +03:00
dzaima
158a3beb2e partially clear object on free in debug mode
catch some more of what valgrind would relatively cheaply
2023-07-10 22:55:19 +03:00
dzaima
acbfcd7302 fix another weird case of 𝕨∾𝕩 2023-07-10 22:55:00 +03:00
dzaima
24fea51bdd fix unshare of fillslice 2023-07-10 22:55:00 +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
1cea42cad3 use getter over 𝕨 for generic 𝕨⍋𝕩
doesn't change perf, but leads to fast amortized long⍋short
2023-07-10 16:50:02 +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
9511598aa3 Fast Bins when either argument is boolean 2023-07-10 07:13:21 -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
38671e3fe9 Fast handling for length-1 𝕨 in Bins 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
4f93b5849b Fix shape of char⍋num result (was deshaped) 2023-07-10 07:13:21 -04:00
Marshall Lochbaum
ec9b875503 Separate is-sorted check from Bins implementation 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
5424c57b7e Use Singeli float binary search 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
6b5815dcc2 fix shape of k/n‿1⥊1 2023-07-10 02:40:36 +03:00
dzaima
8975be082b fix •ns.Get error message 2023-07-09 15:58:31 +03: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
3ae9b14d64 separate arith inits, add comments on init order 2023-06-23 12:10:42 +03:00
dzaima
7618dce2f3 fix return value of overflowed dyadic arith 2023-06-23 12:10:42 +03:00
dzaima
5f43bf16b3 add direct typed array type test macro 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
336f986986 change error messages in ◶ 2023-06-12 00:52:09 +03:00
dzaima
8542ba071d homMaskX, merging multi-arg homMask 2023-06-07 18:14:18 +03:00
dzaima
934a2b5ae3 rearrange things 2023-06-06 21:44:50 +03:00
dzaima
087bf06cac fix type warnings 2023-06-01 20:12:51 +03:00
dzaima
efa1c4a4ff __declspec(dllexport) 2023-06-01 19:04:34 +03:00
dzaima
78bef5fe32 consistent 𝕨⊏𝕩 error messages across argument types 2023-05-30 14:28:36 +03:00
dzaima
2eb12fef82 fix replxx under os=windows 2023-05-30 13:37:15 +03:00
dzaima
7e5b2e0557 don't unroll/vectorize extremely tiny loop 2023-05-30 12:52:17 +03:00
dzaima
5738712bbb improve environ declaration 2023-05-30 12:52:00 +03:00
dzaima
c03dd349e4 disallow •ReBQN constructing namespaces, ignore RETD in interactive REPL 2023-05-27 16:37:42 +03:00
dzaima
da5280021c rename compile → compileAll 2023-05-27 15:38:57 +03:00
dzaima
227dfa20c7 use isatty as a default for notui 2023-05-25 00:16:16 +03:00
dzaima
55e0409582 don't CTZ(0) in gcd 2023-05-24 15:13:25 +03:00
dzaima
c3681a0557 update type number comments 2023-05-22 14:17:53 +03:00
dzaima
3872f5a625 fix 𝕨∾𝕩 reuse logic 2023-05-22 11:40:37 +03:00
dzaima
20a946d085 dynamically switch fork functions 2023-05-22 00:32:44 +03:00
dzaima
b093ebbc66 finish PICK_IDX message 2023-05-22 00:18:59 +03:00
dzaima
f0744f16d0 fix erroring variable read 2023-05-22 00:11:21 +03:00
dzaima
e8caed529c fix JIT SETUi/SETMi/SETCi missing unset variable checks 2023-05-22 00:08:20 +03:00
dzaima
de5bcfe211 static library 2023-05-21 23:47:40 +03:00
dzaima
fd72ea79c8 another gcc warning 2023-05-21 23:39:18 +03:00
dzaima
d15d8febbe slightly less wrong superset fills for 𝕨∾𝕩 2023-05-20 14:28:37 +03:00
dzaima
d6609df820 reserve •CurrentError with namespace 𝕩 2023-05-20 14:28:37 +03:00
dzaima
1e22b48225 in-place ∾ for fillarrs & fillslices 2023-05-20 14:05:22 +03:00
dzaima
bc19e7372d fix pointer check in eachm_fn 2023-05-20 14:05:22 +03:00
dzaima
e781ae21ee give PUSH_COMP access to the updated source string 2023-05-20 13:22:24 +03:00
dzaima
7f46de18fc add missed refcount decrements 2023-05-20 01:30:02 +03:00
dzaima
c9e7dc9976 remove a debug include 2023-05-20 00:01:35 +03:00
dzaima
ad49a9b26d guarantee a space fill to compilation 2023-05-19 22:51:02 +03:00
dzaima
e8d286da3b proper in-place updating in compile() 2023-05-19 22:51:02 +03:00
dzaima
ea70e06eac fix >⟨2,<<3⟩ 2023-05-19 22:51:02 +03:00
dzaima
df348896fd add a NOGC_E for conflicting⌾(list⊸⊏) generic 2023-05-19 22:51:02 +03:00
dzaima
0156d13a5e proper arrow in error messages of ⌾(n⊸↓) vs ⌾(n⊸↑) 2023-05-19 17:32:46 +03:00
dzaima
d930e7f975 add nogc message to thrF 2023-05-19 17:32:14 +03:00
dzaima
a03fab044d •internal.Keep 2023-05-19 15:41:50 +03:00
dzaima
c1488cbf72 faster arr⌾(is⊸⊏)list 2023-05-19 14:15:25 +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
1ec4415e49 clean up some under functions in sfns.c 2023-05-19 13:15:51 +03:00
dzaima
3977849bc5 fix "_m←¨⋄4 m´⟨⟩" and "4 10´⟨⟩" 2023-05-19 12:58:18 +03:00
Marshall Lochbaum
93e590fd9d One case for dyadic constant-each 2023-05-18 15:40:52 -04:00
Marshall Lochbaum
ed5fac7cc9 Constant and tack cases for Table 2023-05-18 15:11:20 -04:00
Marshall Lochbaum
b5de844736 Constants and tacks with rank, except some dyadic cases 2023-05-18 14:52:13 -04:00
Marshall Lochbaum
7440e2a6bc Constant and trivial cases for fold/insert 2023-05-18 12:11:49 -04:00
Marshall Lochbaum
9dfeb451f8 Handle empty cells in insert_base; fixes bugs in dyadic Insert 2023-05-18 11:53:53 -04:00
Marshall Lochbaum
a8cead1d3d Fast cases for tacks, constant operands, and short arguments in scans 2023-05-18 10:54:56 -04:00
Marshall Lochbaum
1ff8954dd3 Fix leak in dyadic •_timed 2023-05-18 10:54:56 -04:00
Marshall Lochbaum
6ac8944b06 Remove redundant isAtm check in constant case of each_c1 2023-05-18 10:54:56 -04:00
dzaima
b46477450d fix shape of argument passed to F in F⌾(is⊸⊑)
& skip computing the argument if not needed
2023-05-18 16:37:24 +03:00
dzaima
0572fcc5b2 native F⌾(list⊸⊑) & ⌾(listOfLists⊸⊑) 2023-05-18 01:54:01 +03:00
dzaima
d310669ae8 unify F⌾(n⊸⊑) and F⌾⊑ 2023-05-18 00:27:38 +03:00
dzaima
3047ff48b5 Add rank checks to •FChars & •FLines & •FBytes & •Out
& clean up terminology
2023-05-17 21:56:40 +03:00
dzaima
e355395e7a remove duplicated check 2023-05-17 20:53:26 +03:00
dzaima
4f15e1572d disallow •Out ⋈0 2023-05-17 20:50:21 +03:00
dzaima
ec106c0b31 better heuristic for 𝕨∊𝕩 comparison-or path 2023-05-17 18:42:24 +03:00
dzaima
e4d222173d a bunch of fixes for generic architecture & wasm 2023-05-16 00:07:48 +03:00
dzaima
65868a51ba use the type of the correct argument in check 2023-05-13 02:19:10 +03:00
dzaima
f0a9714e8b copy result in tbl_c2 if needed 2023-05-13 00:33:22 +03:00
dzaima
a9478f802f tuning for arithmetic leading axis, F⌜, and reshape-based ⎉ 2023-05-13 00:33:22 +03:00
dzaima
a3e8a1388d move all targets to build.bqn with Singeli & REPLXX enabled by default 2023-05-12 20:51:25 +03:00
dzaima
2f51974c2f use proper pointer conversion macros in ffi.c 2023-05-12 19:36:02 +03:00
dzaima
f229b3c486 fix rtperf
not that anyone uses it anymore
2023-05-12 16:34:23 +03:00
dzaima
a39264533e custom _mm_loadu_si16/_mm_storeu_si16 for old gcc 2023-05-12 16:34:23 +03:00
dzaima
6dc24bd99b free arguments of SIMD 𝕨∊𝕩 & ∊𝕩 2023-05-12 13:51:30 +03:00
Marshall Lochbaum
25883b410c Retune boundary for small-𝕩 linear Member Of 2023-05-11 21:11:43 -04: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
017e2433fb Fast paths for all empty-argument search cases 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
53bacf00c8 native F⟜k⁼𝕩 & k⊸F⁼𝕩 2023-05-11 15:28:40 +03:00
dzaima
08b6ff77c4 c1G & c2G 2023-05-11 15:28:40 +03:00
dzaima
fa4aebbe9c native dyadic inverses of F˜ 2023-05-11 15:28:40 +03:00
dzaima
bae49543be native F˜⁼ 𝕩 2023-05-11 15:28:40 +03:00
dzaima
d1a5ed3e00 err → fatal 2023-05-11 15:28:23 +03:00
dzaima
aa68ed0730 define single ICMP 2023-05-11 15:28:23 +03:00
dzaima
4b0cd3217f proper statement definition of assert 2023-05-11 15:28:23 +03:00
dzaima
fe39fe1932 remove Md1H/MD2R 2023-05-11 15:28:23 +03:00
dzaima
e775202684 describe types in src/README.md 2023-05-10 00:05:29 +03:00
dzaima
a8738c68ed update bytecode submodule 2023-05-09 21:54:01 +03:00
dzaima
5979c0fed9 pass fully native primitives to r1 2023-05-09 21:50:16 +03:00
dzaima
0f2ef4384c don't inline groups_lt 2023-05-09 00:14:14 +03:00
dzaima
300d217ee8 move SIMD constrep functions to a table 2023-05-09 00:14:14 +03:00
dzaima
0598ce8357 use getFillQ less 2023-05-09 00:14:14 +03:00
dzaima
d62c77af41 add threshold for reshape-based ⎉+n path 2023-05-06 16:57:38 +03:00
dzaima
3dcb32a54a fast Arith⎉+n where n is the rank of one argument 2023-05-06 16:28:41 +03:00
dzaima
56d1453185 use destructuring more in Singeli 2023-05-06 13:18:00 +03:00
dzaima
4ff4460d67 put logging behind the macro check 2023-05-06 02:05:38 +03:00
dzaima
f640767e97 increase JIT memory allocation size
virtual memory should make it not matter for memory usage, or maybe even very slightly improve it due to less page table fragmentation
2023-05-06 01:11:30 +03:00
dzaima
45cc672af1 move allocation log message to before allocating
and print result
2023-05-06 01:09:34 +03:00
dzaima
78159f4f04 check for the proper failure value in mmap_nvm 2023-05-05 23:04:22 +03:00
dzaima
8177b668f4 fix ∾𝕩 error checking 2023-05-05 19:54:43 +03:00
dzaima
cc94ec4cbc move out another s+↕n loop 2023-05-05 13:28:58 +03:00
dzaima
14ca835fa2 don't unroll comparatively extremely tiny loop 2023-05-05 13:23:47 +03:00
dzaima
65d0b829bd reuse range generation from ↕n for •rand.Deal 2023-05-05 12:41:36 +03:00
dzaima
1072d0bb9c merge emptyIVec() case with bitUD[0] 2023-05-05 12:18:31 +03:00
Marshall Lochbaum
78eeaae762 Remove MergeShuffle: only used above 2⋆28 with split and not a huge speedup 2023-05-04 18:11:55 -04:00
Marshall Lochbaum
2b9c193f24 Outer split pass for large •rand.Deal 2023-05-04 14:28:32 -04:00
Marshall Lochbaum
a4f9d23709 Simplify merge-shuffle index usage 2023-05-04 10:18:38 -04:00
Marshall Lochbaum
6cc9d40490 Fast cases for short •rand.Deal𝕩 2023-05-04 09:10:29 -04:00
Marshall Lochbaum
8191aa6da2 Only iterate over set bits in random merge 2023-05-04 09:10:29 -04:00
Marshall Lochbaum
bc7275a91b Basic MergeShuffle implementation (slow merge) 2023-05-04 09:10:29 -04:00
dzaima
9fd80e3193 split buckets above 2^20 bytes when possible 2023-05-04 12:28:47 +03:00
dzaima
1bd9467a2d cleanup 2023-05-04 12:27:13 +03:00
dzaima
776b0b2b47 fix estimated UTF-8 length of codepoints 2047 and 65535 2023-05-02 10:49:11 +03:00
dzaima
352961a7eb another ubsan complaint 2023-05-02 10:47:13 +03:00
dzaima
65e246774e -mllvm --x86-cmov-converter=0 2023-04-30 20:03:09 +03:00
dzaima
0e79e9f868 fix ubsan notes 2023-04-30 19:50:24 +03:00
dzaima
cd40ec8117 fix ¯2e9‿2e9⍋0 2023-04-30 19:35:18 +03:00
dzaima
c567dff565 fix leading-axis operations on empty inputs 2023-04-30 19:15:46 +03:00
dzaima
93dd25e0e1 fast leading-axis for <>≤≥=≠ 2023-04-30 19:00:56 +03:00
dzaima
c889a07d75 replicate-using leading axis arithmetic case 2023-04-30 18:46:41 +03:00
dzaima
1e11cf93c1 faster leading axis arithmetic 2023-04-30 17:27:07 +03:00
dzaima
048352f587 fix 0˝˘ 2‿2⥊0 2023-04-29 21:15:46 +03:00
dzaima
0a30c7b4e6 more generic n⊸↑⎉k & n⊸↓⎉k & n⊸⍉⎉k 2023-04-29 21:10:44 +03:00
dzaima
aae8651e8b fix Arith⌜ with empty 𝕨 2023-04-29 20:11:24 +03:00
dzaima
518635d0b9 generic 𝕨 ≡⎉¯k 𝕩 2023-04-29 20:01:48 +03:00
dzaima
df613ad674 w⊸F⎉g x → w F⎉∞‿g x & F⟜x⎉g w → w F⎉g‿∞ x 2023-04-29 17:39:13 +03:00
dzaima
e40d056ee4 use err() for unexpected state 2023-04-29 17:39:13 +03:00
dzaima
5e29ec72ce sanity test of mmap address top 16 bits being 0 2023-04-29 17:39:13 +03:00
dzaima
35786d4f5b m_hVec\d → m_hvec\d 2023-04-29 17:39:13 +03:00
dzaima
e200bbc5f9 move ↕list to its own function 2023-04-29 17:39:13 +03:00
dzaima
bb7c37960e a round of more incG/incByG 2023-04-29 17:39:13 +03:00
dzaima
a855d03b93 use %c in v_merge 2023-04-29 17:39:13 +03:00
dzaima
a0d384060a unify implementations of m_vec1 and m_unit 2023-04-29 17:39:13 +03:00
dzaima
3b580cbd0c rename unit creation methods 2023-04-29 17:39:13 +03:00
dzaima
88c19cedec attempt at cleaning up mut.c a bit 2023-04-29 17:39:13 +03:00
dzaima
56e4863f66 typedef c8/c16/c32 2023-04-29 17:39:13 +03:00
dzaima
865257fdb6 more header file cleanup 2023-04-29 17:39:13 +03:00
dzaima
aa5ed7cc7a BB2B & BBB2B → FC1 & FC2 2023-04-29 15:31:31 +03:00
dzaima
ca13fb567a header file cleanup 2023-04-29 13:54:32 +03:00
dzaima
229a32237a slice checking macro refactor 2023-04-29 13:24:20 +03:00
dzaima
ba1b853936 don't use the cell appender for Arith⌜ 2023-04-29 13:13:58 +03:00
dzaima
62e2ea96ce zsh needs to be kept alive even for zk==1 2023-04-28 21:04:30 +03:00
dzaima
7f0390be3f more error messages 2023-04-28 20:49:34 +03:00
dzaima
7dd677a4e2 various fill improvements 2023-04-28 20:31:44 +03:00
dzaima
7a501ffbdf use APD for ∾list 2023-04-28 20:17:44 +03:00
dzaima
5aa896ab38 use APD for Arith⌜ 2023-04-28 19:30:54 +03:00
dzaima
b17d2010c2 better error messages 2023-04-28 19:25:42 +03:00
dzaima
38b2028374 use APD for ˘/⎉ 2023-04-28 19:25:42 +03:00
dzaima
3761eafd0a fix fills 2023-04-28 18:54:52 +03:00
dzaima
5c64c32aa9 allow GC between APD calls, delay shape errors 2023-04-28 18:54:52 +03:00
dzaima
7b877d368f move fill handling to APD 2023-04-28 18:54:52 +03:00
dzaima
2f46b80b82 yet another mutable temporary array thing 2023-04-28 18:54:52 +03:00
dzaima
880efa38b4 better fill equality checking utilities 2023-04-28 18:51:41 +03:00
dzaima
d0e76ec436 better selfElType 2023-04-28 16:22:13 +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
d43ffd6b62 remove no longer needed E_SLICES 2023-04-25 22:13:41 +03:00
dzaima
037d36ddab rework for_cells_AA 2023-04-25 22:13:13 +03:00
dzaima
586aeaea2d HARR_FP 2023-04-25 21:44:55 +03:00
dzaima
23737cc458 proper error messages for ⎉ vs ˘ 2023-04-24 19:43:04 +03:00
dzaima
77154be2a8 testing setup for ˘ & ⎉
incl. toggleable fill testing for !CATCH_ERRORS
2023-04-24 19:43:04 +03:00
dzaima
6d33018788 merge dyadic ˘ & ⎉ 2023-04-24 19:43:04 +03:00
dzaima
e11d5dd31d •internal.HasFill 2023-04-24 19:43:04 +03:00
dzaima
0b2ed69fba add a NOGC_E in mut_pfree
fixes >⟨"ab"‿1,"a"⟩ in debug builds unnecessarily breaking
2023-04-24 01:01:35 +03:00
dzaima
b4a207a924 better fix for in-place 𝔽¨𝕩 on fillslice 𝕩 2023-04-23 22:49:19 +03:00
dzaima
927814d182 fix ⊢¨ {a←𝕩 ⋄ ⥊𝕩} 2‿3⥊<"a" 2023-04-23 22:17:32 +03:00
dzaima
2259e7b6a9 fix ↕1‿0‿1e9‿1e9‿1e9 incorrectly erroring 2023-04-23 22:17:32 +03:00
dzaima
9d9c3fe8ac return signal code+128 in exit code on signaling •SH invocation 2023-04-23 22:17:32 +03:00
dzaima
c50674d63a always overallocate by 4 bytes in 32-bit output case for /bitarr 2023-04-23 15:11:58 +03:00
dzaima
10edc75f09 use c1fn for monadic ˘/⎉ 2023-04-22 22:33:32 +03:00
dzaima
6d5cee1cdc extract one-call case to noinline function 2023-04-22 22:33:32 +03:00
dzaima
1ff31f1df3 don't hard-code VERIFY_TAIL size
+ improve error message
2023-04-22 22:33:32 +03:00
dzaima
5395d1eb08 cleanup 2023-04-22 19:10:58 +03:00
dzaima
36b99d3505 handle more cases of ⊏⎉n & ⊑⎉n 2023-04-22 18:44:21 +03:00
dzaima
fe071b641f handle more cases of ⍉⎉n & «⎉n & »⎉n 2023-04-22 18:44:21 +03:00
dzaima
1c041fd968 move emptiness checks to where needed 2023-04-22 18:34:29 +03:00
dzaima
e4d38f571d move k==0 case out of for_cells_c1 2023-04-22 18:34:25 +03:00
dzaima
edf1f2df7e merge_fill_result changes
incl. fixing when rr==k
2023-04-22 18:34:18 +03:00
dzaima
78764ec47c move SLICE source refcount incrementing outside of loop 2023-04-22 18:33:39 +03:00
dzaima
b10a87fe00 merge ˘ & ⎉ 2023-04-22 18:31:29 +03:00
dzaima
1ffc141919 move toCells & toKCells to cells.c 2023-04-22 18:31:24 +03:00
dzaima
1de59d6ee8 reorder functions 2023-04-22 17:20:05 +03:00
dzaima
663fe29a89 move monadic ⎉ to slice macros 2023-04-22 17:20:05 +03:00
dzaima
078ee7af97 use c2fn in insert_base 2023-04-22 17:20:05 +03:00
dzaima
d2ac5db1c8 move ⎉ & ˘ to their own file 2023-04-22 17:20:05 +03:00
dzaima
3e9f1ce1b0 arr_shErase 2023-04-22 16:33:55 +03:00
dzaima
6c988c3804 ptr_incBy 2023-04-22 13:06:13 +03:00
dzaima
e0479adee4 fix rank overflow check in 𝕨⥊𝕩 2023-04-22 11:53:54 +03:00
dzaima
20b3867581 change %c in format strings to u32 unicode codepoint 2023-04-22 10:58:25 +03:00
dzaima
2f59dec8b7 fix fallback profiler_start signature 2023-04-22 01:27:46 +03:00
Marshall Lochbaum
b6590b0eab Move Insert implementation to fold.c, except the generic case 2023-04-21 22:00:08 +03:00
dzaima
e276779eca fix heapverify 2023-04-21 21:53:11 +03:00
dzaima
6d7b679234 fast path for comparing equal-pointer typed arrays 2023-04-21 17:57:58 +03:00
dzaima
58ac287ef6 handle array-atom comparison separately from array-array 2023-04-21 17:55:38 +03:00
dzaima
a7ceda6b28 fix float NaN comparison 2023-04-21 17:55:38 +03:00
dzaima
c3347d6815 move f32 to h.h, add reinterpreting helper methods 2023-04-21 16:32:35 +03:00
dzaima
9bb7fa406b add assertion for arr_shReplace rank expectation 2023-04-21 15:50:42 +03:00
dzaima
01b17ea0d9 remove now-unnecessary workaround for float constant 2023-04-21 15:46:54 +03:00
dzaima
d127059de8 more gcc complaints 2023-04-21 13:48:24 +03:00
dzaima
01d64e4112 gcc complains about this now for whatever reason 2023-04-19 22:48:24 +03:00
dzaima
e45bd78f25 fix comparison of empty high-rank arrays 2023-04-19 22:42:28 +03:00
dzaima
d13f3fad94 fix ∧𝕩 & ∨𝕩 on high-rank zero-cell input 2023-04-19 21:52:38 +03:00
dzaima
53fe627e6e allow hashing operation type wrappers 2023-04-19 21:40:29 +03:00
dzaima
1bc439c214 ARMO needs source mapping 2023-04-17 13:19:38 +03:00
dzaima
c57e0ba135 more fixes for overflow checking 2023-04-17 13:07:50 +03:00
dzaima
c2754e0fff don't OOM in 𝕨↑𝕩 with 0≡×´𝕨 if product of prefix overflows 2023-04-17 12:53:02 +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
04ccf9fd49 add compare.c to single.c 2023-04-14 21:24:51 +03:00
dzaima
a2d27c69be make √, ⋆, •math.Atan2 behave as if ¯0 was 0 2023-04-14 21:22:18 +03:00
dzaima
51e34c55d3 make division not care about sign of 𝕩 2023-04-14 20:24:36 +03:00
dzaima
08885fabad remove extraneous v+0 in normalizeFloat 2023-04-14 20:06:54 +03:00
dzaima
55da9e99d6 reorganize equality checks more 2023-04-14 20:06:36 +03:00
dzaima
f001841d17 move comparison functions to separate file 2023-04-14 18:11:49 +03:00
dzaima
3623fbd5ba equality check cleanup 2023-04-14 18:09:38 +03:00
dzaima
2413236d51 format ¯0 as 0 2023-04-14 16:28:27 +03:00
dzaima
ee47921b43 normalize ¯0 2023-04-14 16:28:27 +03:00
dzaima
2fd390ebf8 better fix for character 𝕨∊𝕩 & 𝕨⊐𝕩 2023-04-14 15:42:58 +03:00
dzaima
94bcc4bcc1 make debugger helpers print to stderr 2023-04-14 14:58:11 +03:00
dzaima
1c8916949e fix ⊏ with odd shape 𝕩 & depth 2 𝕨 2023-04-14 00:14:57 +03:00
dzaima
68c3ba3aa0 fix leak in dyadic Insert with an empty argument 2023-04-14 00:05:39 +03:00
dzaima
4d3db9ca0b fix ∊ & ⊐ being broken on one c8 & one c16 argument 2023-04-14 00:05:23 +03:00
dzaima
44ce033e73 fix leak in dyadic scan with an empty argument 2023-04-14 00:05:23 +03:00
dzaima
102a696164 fix ⟨2⟩↕a 2023-04-13 22:22:50 +03:00
dzaima
4f382476ff src/README.md GC notes & other cleanup 2023-04-13 22:03:17 +03:00
dzaima
6239e2f2dd add binary mode flag to fopen calls 2023-04-13 15:54:34 +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
9951f20751 clean up some error messages 2023-04-08 22:12:15 +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
3a7bce3aab a bunch of Scan fixes & improvements 2023-04-07 20:41:34 +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
65f25f735d
Merge pull request #73 from mlochbaum/count
Count by vector compare+add
2023-04-06 19:19:25 +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
ecced53957 test usz=64
also fix MM=2 assertion
2023-04-06 18:17:59 +03:00
dzaima
a0cdcdc898 fix self-search radix-based cases with 64-bit usz 2023-04-06 17:51:58 +03: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
a7e2d9ea17 extract single-element search to its own function 2023-04-06 13:38:33 +03:00
dzaima
71f9278a95 use COPY_TO to copy in bqn_readObjArr if possible 2023-04-06 13:37:00 +03:00
dzaima
0aca470931 more explicit inline requiring 2023-04-06 13:12:11 +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
5a2b755191 move non-AVX2 x86-64 into SINGELI_SIMD 2023-04-02 15:55:49 +03:00
dzaima
100a188545 fix aarch64 singeli 2023-04-02 15:39:42 +03:00
dzaima
c76adb8b35 default to •internal.EEqual comparing 0 and ¯0 as equal 2023-04-02 15:29:11 +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
13eebb1759 move all singeli builds to build.bqn, add has=
also:
include commit-based version by default for build/build
expand things included in --version
don't require Singeli for BMI2 usage in bitarr/bitarr
2023-03-31 19:15:23 +03:00
dzaima
dc2ac37e0a arch-independent Singeli builds 2023-03-31 16:45:29 +03:00
dzaima
0180a54207 quiet gcc warning 2023-03-31 16:34:08 +03:00
dzaima
c513724fd4 hide clangd warning
and remove whitespace which was previously used for alignment
2023-03-31 14:27:43 +03:00
dzaima
baa1281efe don't assume select returns refcount 1 array
that probably would be a safe assumption right now, but who knows about the future; cpyWithShape should return back its argument directly if it already has refcount 1 anyway
2023-03-31 14:14:13 +03:00
dzaima
413b49de30 don't assume sizeof(ur)==1 2023-03-31 13:44:32 +03:00
Marshall Lochbaum
69e2f6c690 Convert ⍉˘ with atom or no left argument to dyadic ⍉ 2023-03-30 21:25:21 -04:00
Marshall Lochbaum
9fe6a2e7b2 Under for invertible Reorder Axes 2023-03-30 19:07:09 -04:00
Marshall Lochbaum
d53f3dbd72 Native dyadic ⍉⁼ 2023-03-30 19:02:45 -04:00
Marshall Lochbaum
89016fc88d Update Reorder Axes implementation comments 2023-03-29 20:23:16 -04:00
Marshall Lochbaum
597e25af4d Full simplification pass for Reorder Axes 2023-03-29 20:08:36 -04:00
Marshall Lochbaum
d492cd0865 And strided height, so all orders are fast if axes are long 2023-03-29 12:37:15 -04:00
Marshall Lochbaum
e923a71881 Use strided width in transpose-based Reorder Axes 2023-03-29 12:37:15 -04:00
Marshall Lochbaum
814a677676 Make transpose movement functions strided 2023-03-29 12:37:15 -04:00
Marshall Lochbaum
de18fb996b Save a shape object in Reorder Axes 2023-03-29 12:37:15 -04:00
Marshall Lochbaum
7fea4ca2ad Combine transp_c2 temp allocations into one TALLOC 2023-03-29 12:37:15 -04:00
Marshall Lochbaum
5b17ee44d6 SIMD kernel for Reorder Axes transposing last two axes 2023-03-29 12:37:15 -04:00
Marshall Lochbaum
8413461074 Fast bottom-level loop for Reorder Axes loop structure 2023-03-29 12:37:15 -04:00
Marshall Lochbaum
bbedbbc585 Transpose large cells with mut_copyG 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
Marshall Lochbaum
37f481ea0d Separate out transpose data movement function and share with monadic ⍉⁼ 2023-03-28 16:11:46 -04:00
Marshall Lochbaum
3c32844fe0 Separate out transpose_move function and use for el_B 2023-03-28 16:11:46 -04:00
Marshall Lochbaum
968bfd2fc6 Separate transpose el_B case and fix dropped fill for shape 2‿n 2023-03-28 16:11:46 -04:00
Marshall Lochbaum
dea063cb7b Easy optimizations: (1-˜=𝕩)⍉𝕩 to ⍉𝕩 and detect trailing unchanged axes 2023-03-28 16:11:46 -04:00
Marshall Lochbaum
b555e3c035 Reorder Axes translated from runtime version 2023-03-28 16:11:46 -04:00
Marshall Lochbaum
432b4eaaa6 Transpose implementation comments 2023-03-28 16:11:46 -04:00
dzaima
21b9ad5c3c don't include debug.singeli 2023-03-27 17:53:01 +03:00
dzaima
9780cacacd commented-out heap alignment 2023-03-27 17:38:26 +03:00
dzaima
f175bc9e19 fix printf of sample count 2023-03-26 15:57:09 +03:00
dzaima
1f2456042c clean up calls.h includes 2023-03-26 15:54:27 +03:00
dzaima
1f70c08aa2 fillarr NOGC 2023-03-26 15:43:59 +03:00
dzaima
709c1896d3 better selfElType 2023-03-26 14:30:49 +03:00
dzaima
37a32eb15a fix native non-Singeli builds 2023-03-24 23:51:18 +02:00
dzaima
830c752e87 instruction pointer storing profiling 2023-03-24 18:07:48 +02:00
dzaima
e4c95dce22 fix profiler buffer size usage 2023-03-24 13:47:33 +02:00
dzaima
98f4df88d0 whitespace 2023-03-23 18:35:55 +02:00
dzaima
fa8437ca25 don't use _mm256_loadu2_m128i
doesn't exist on old gcc
2023-03-23 18:21:34 +02:00
Marshall Lochbaum
699faea69c Dedicated width-overflow loop for SIMD transpose 2023-03-22 17:34:37 -04:00
Marshall Lochbaum
5a2bc15f2a Overlap SIMD transpose on width too 2023-03-22 15:14:09 -04:00
Marshall Lochbaum
61eefe0776 Fix writing past end in i16 transpose with overlapped halves 2023-03-22 15:14:09 -04:00
Marshall Lochbaum
8ff40cb2e5 Overlap SIMD transpose to handle uneven heights (not widths yet) 2023-03-22 15:14:09 -04:00
Marshall Lochbaum
fad7f3aa8b Simplify 2023-03-22 15:14:09 -04:00
Marshall Lochbaum
dd141add3f Merge i16 SIMD transpose with the rest of them 2023-03-22 15:14:09 -04:00
Marshall Lochbaum
9673771187 Combine code for the different transpose kernel geometries 2023-03-22 15:14:09 -04:00
Marshall Lochbaum
e40feaa81c Make transpose kernel code type-generic 2023-03-22 15:14:09 -04:00
Marshall Lochbaum
923c485cc2 Use packed-halves transpose kernel for 8x8 i16 2023-03-22 15:14:09 -04:00
Marshall Lochbaum
2a8e6e9c8a Separate most transpose kernel logic from loops and move i8 case into main 2023-03-22 15:14:08 -04:00
Marshall Lochbaum
7d800bf349 SIMD transpose on 1-byte elements 2023-03-22 15:14:08 -04:00
Marshall Lochbaum
5fccf4cda3 Refactoring; check for small transpose width/height in Singeli, not C 2023-03-22 15:14:08 -04:00
Marshall Lochbaum
ff6361e363 Move tranpose to its own file 2023-03-22 15:14:08 -04:00
Marshall Lochbaum
0e2e315e51 Allow an 8x8 row for 2-byte transpose 2023-03-22 15:14:08 -04:00
Marshall Lochbaum
239c765998 SIMD transpose on 2-byte elements 2023-03-22 15:14:08 -04:00
Marshall Lochbaum
f6c6e72661 More transpose kernel refactoring 2023-03-22 15:14:08 -04:00
Marshall Lochbaum
c0aaa6f615 SIMD transpose on 8-byte elements 2023-03-22 15:14:08 -04:00
Marshall Lochbaum
a0e85db702 Refactor vtranspose with more general code 2023-03-22 15:14:08 -04:00
Marshall Lochbaum
ca44d41daa Faster i32 transpose when height is a multiple of 16 by writing cache lines 2023-03-22 15:14:08 -04:00
Marshall Lochbaum
bfb2519aed Remove transpose_rec (was unused): the whole cache-oblivious thing seems to be useless 2023-03-22 15:14:08 -04:00
dzaima
5c6075c29d support namespace a.b in native compiler
and use for •file.At in bootstrap.bqn
2023-03-22 19:58:01 +02:00
dzaima
dc583d754c separate FLDG for gid-based field lookup 2023-03-22 19:49:32 +02:00
dzaima
9337de5a0e fix LST_/ARM_ comments in vm.h 2023-03-21 23:04:39 +02:00
dzaima
d9ebdf060f )t:1s
also fix )profile
2023-03-21 04:06:53 +02:00
dzaima
fe36c74080 support exponential for )t 2023-03-21 02:56:39 +02:00
dzaima
1ec37410c6 faster constint|intarr 2023-03-21 02:45:42 +02:00
dzaima
d333902f74 fast integer 𝕨|𝕩 2023-03-21 02:06:45 +02:00
dzaima
e14a3629f6 don't try lowercasing × 2023-03-20 18:18:16 +02:00
dzaima
b0201131e2 array type support for •FFI 2023-03-20 16:44:58 +02:00
dzaima
ca0c100b73 name normalization for •ns.Get & •ns.Has
also fix •ns.Has error message & rename some function declarations
2023-03-19 23:27:05 +02:00
dzaima
0b32ef96ce inline → inplace in existing-scope-mutating function names 2023-03-19 22:47:00 +02:00
dzaima
4a6877a87a Rank checks 2023-03-19 15:42:11 +02:00
dzaima
a3d74c6af2 MUT_APPEND 2023-03-16 22:27:44 +02:00
dzaima
390ee503fb extract function for a+↕b 2023-03-16 22:05:44 +02:00
dzaima
a9b83ca70a V_POS, V_DEPTH 2023-03-16 22:03:08 +02:00
dzaima
db8a4d3af0 don't use def as a variable name 2023-03-12 00:11:30 +02:00
dzaima
1178e5df56 new Singeli syntax 2023-03-11 23:17:30 +02:00
dzaima
8194f51b30 MAKE_MUT_INIT, move mut_init to mut.c 2023-03-11 16:52:09 +02:00
dzaima
3f0bc57503 move diagnostics coloring option outside of hash 2023-03-11 16:51:59 +02:00
dzaima
01c457b77b make all cpy.*Arr function results Arr* 2023-03-11 16:51:13 +02:00
dzaima
92763fa8b2 proper hash values for derived functions 2023-03-06 20:29:35 +02:00
dzaima
ab5b8f92b4 fast F˜˝˘ and F˜˝ and F˜⌜ for pervasive F 2023-03-05 16:48:10 +02:00
dzaima
680d0f8601 use mut_copy for building fold_rows result 2023-03-05 15:20:12 +02:00
dzaima
1c0b797456
Merge pull request #69 from mlochbaum/transfold
Blocked transpose implementation for fold-cells
2023-03-05 15:10:26 +02:00
dzaima
98c963453b •internal.GC 2023-03-05 14:16:38 +02:00
dzaima
4b6dd1bf81 immediately mark&sweep unknown reference objects instead of storing 2023-03-05 14:05:08 +02:00
dzaima
c5aedaa414 switch to GCv2, various fixes/cleanup
includes:
  fixing some refcounts for FOR_BUILD build •FFI
  moving DEBUG_VM prints to stderr
  fixing heapverify reports of loose shape objects of fillarrs
  regular ol' adding-of-semicolon-after-label for old gcc
  move GC enable to after all initialization, not load_init
2023-03-05 01:23:53 +02:00
Marshall Lochbaum
f4d2e26e58 Don't do transposing fold unless height is greater than width 2023-03-04 14:42:00 -05:00
Marshall Lochbaum
176152b445 Handle fold-cells on row length 1 with ⊏˘ 2023-03-04 14:28:22 -05:00
Marshall Lochbaum
4b35acb82b Transpose-based fold-cells implementation 2023-03-04 14:24:56 -05:00
dzaima
16274e5952 bucket coalescing on GC 2023-03-04 20:09:12 +02:00
dzaima
ead637b135 don't leak c1fn/c2fn arguments from array function 2023-03-04 18:58:07 +02:00
dzaima
717074a2f8 fast transpose on shape n‿2 𝕩 2023-03-03 19:13:15 +02:00
dzaima
76d26db4c2 faster F˘´n‿2⥊𝕩 for pervasive F 2023-03-03 17:45:16 +02:00
dzaima
fd72d416db manual prefix character typing detecting 2023-03-03 16:11:55 +02:00
dzaima
093beda394 faster path for 𝕨/𝕩 with non-boolean 𝕨 with sum 0 2023-03-03 13:41:20 +02:00
dzaima
397f8745ce go back to regular completions if no system commands match 2023-02-27 23:51:35 +02:00
dzaima
dfd78115c3 remove repl initialization before it's needed 2023-02-26 18:58:08 +02:00
dzaima
2c107025ab add argument for non-GC_VISIT_V2 2023-02-26 18:53:06 +02:00
dzaima
78eb351e10 allow top-level GC to collect all garbage in GC_VISIT_V2 2023-02-26 18:37:07 +02:00
dzaima
418a1c054f no longer need position setting hack on enter
also makes enter_replxx allocation-free, allowing it to run during OOM
2023-02-26 18:30:22 +02:00
dzaima
bcc19c11fd fix GC_VISIT_V2 completely not respecting -M 2023-02-26 18:26:19 +02:00
dzaima
1c1da8fdfe completion options for system commands 2023-02-26 18:09:28 +02:00
dzaima
a570bcaf88 fix replxx things 2023-02-26 16:09:38 +02:00
dzaima
6d03071ae6 SIMD i32 transpose 2023-02-26 01:19:54 +02:00
dzaima
a928277e8c make heapverify run on GC_VISIT_V2
also make it able to track shape object leaks
2023-02-25 00:21:15 +02:00
dzaima
c6c0b8925e don't need allocMore_rec on non-gcv2 2023-02-24 23:38:29 +02:00
dzaima
6e6169530d GC v2 2023-02-24 23:28:55 +02:00
dzaima
deee2c7a18 use C1 & C2 more 2023-02-24 15:53:11 +02:00
dzaima
1af9155425 optional path arg for •internal.HeapDump; STORE_JIT_MAP 2023-02-24 00:16:44 +02:00
dzaima
b506b434a2 add Singeli directory to build cache key, add rebuild-singeli, quiet gcc 2023-02-23 23:36:41 +02:00
dzaima
8ad5132a6d find & eqfn changes, use toI32Any more 2023-02-22 13:48:45 +02:00
Marshall Lochbaum
032e32ae1a Fast flat ≡˘ and ≢˘ in most cases 2023-02-20 10:43:24 -05:00
Marshall Lochbaum
89e6be10e5 Add eqFns to calls.h and use for Find 2023-02-20 10:07:44 -05:00
Marshall Lochbaum
b56e547e34 Define eqFns in non-Singeli build 2023-02-20 08:20:05 -05:00
Marshall Lochbaum
fcc5c2e449 Slice function instead of take/drop 2023-02-19 21:14:42 -05:00
Marshall Lochbaum
ea6c7d9a7a Use a C comparison function instead of a BQN one 2023-02-19 21:08:21 -05:00
Marshall Lochbaum
d2950a8df6 Flat rank 1 Find implementation using primitive calls 2023-02-19 20:34:32 -05:00
dzaima
70fec7eb1e fix •ns.Keys on namespaces with unexported fields 2023-02-19 18:30:57 +02:00
dzaima
7013a9edf9 •ns.Get, •ns.Has, •ns.Keys 2023-02-19 18:02:35 +02:00
dzaima
428064a5c2 skip lookup table zero-initialization for x⊐x 2023-02-18 23:57:02 +02:00
dzaima
bb36755d67 native 𝕨/highrank 2023-02-18 21:04:22 +02:00
dzaima
96316f0fe1 faster 2↕ 2023-02-18 19:47:22 +02:00
dzaima
7b57b4ae39 explicitly mark code sections where allocations aren't allowed to happen 2023-02-18 17:46:55 +02:00
dzaima
c32285dba9 Singeli copy from unaligned bitarr 2023-02-18 11:52:45 +02:00
dzaima
63fa511c55 deduplicate typed pointer calculation in mut.c 2023-02-18 00:09:37 +02:00
dzaima
8e720a2faa use loadLow & storeLow in neq.singeli 2023-02-17 23:41:26 +02:00
dzaima
1e6b612e13 NEON copy.singeli 2023-02-17 22:10:21 +02:00
dzaima
0aada6163a move src/clangdCommands.bqn to build/build clangd 2023-02-17 18:44:13 +02:00
dzaima
f76836aedd clean up arithd.c & slightly improve non-Singeli impls 2023-02-17 16:43:07 +02:00
dzaima
32142a45d6 Widen cells in 𝕨∊𝕩, 𝕨⊐𝕩, 𝕨⊒𝕩 2023-02-17 00:27:15 +02:00
dzaima
089e2a38c6 update Singeli things 2023-02-16 21:31:19 +02:00
dzaima
f700a3e150 pad input cells when needed for for ∊𝕩, ⊐𝕩, ⊒𝕩 2023-02-13 00:19:50 +02:00
dzaima
fd1178bc0e use BMI2 for widening to <32-bit cells 2023-02-10 23:04:20 +02:00
dzaima
53737ab3fb use BMI2 for narrowing <32-bit cells 2023-02-10 23:01:45 +02:00
dzaima
855541954f initial bit widen&narrow for ⊏ 2023-02-10 17:59:22 +02:00
dzaima
23d99d7a24 more precise detection of when bit 𝕩 won't use simd for widening path 2023-02-04 18:17:21 +02:00
dzaima
f39ca95c58 maybe slightly better bit→i8→bit heuristic
the more proper thing is to pad cells to the nearest power-of-two byte size anyway
2023-02-04 17:16:01 +02:00
dzaima
be9d0c287e better 𝕨⊏𝕩 with non-power-of-two cell sizes 2023-02-04 03:30:05 +02:00
dzaima
d2679da7e8 ⊏: don't get in an infinite loop of f64 𝕨 2023-02-04 03:04:06 +02:00
dzaima
98f6944440 unify rank 1 and high-rank ⊏ 2023-02-03 18:55:19 +02:00
dzaima
a84ca6c5d6 strict prototypes 2023-02-03 15:33:31 +02:00
dzaima
dbe4c0b51a support character literals in native compiler 2023-02-02 22:52:02 +02:00
dzaima
356093e313 remove unwanted increment 2023-02-02 22:51:44 +02:00
dzaima
05c1270344 better 𝕨⊏𝕩 with 0=×´≢𝕨 2023-02-02 00:40:52 +02:00
dzaima
c5272b47fb allow running el2t on el_B & el_MAX
under the assumption that the result won't actually be used; but if it is, trying to free or gc the object will result in a crash
2023-02-01 22:48:10 +02:00
dzaima
c38565ab8d whitespace cleanup 2023-01-31 00:07:00 +02:00
dzaima
a650051a82 don't need an actual function object for eachd_fn / eachm_fn 2023-01-28 14:57:04 +02:00
dzaima
4a45a07a2b native ⚇0 2023-01-27 22:59:22 +02:00
dzaima
e5bbde745a native handling of ⌾{...} 2023-01-27 04:09:07 +02:00
dzaima
10705823de more squeezing changes in ⊐𝕩 and ⊒𝕩 2023-01-27 03:17:20 +02:00
dzaima
ea0aa709fe squeeze result of ⊒𝕩, copy result of ⊐𝕩 to smaller width when possible 2023-01-27 02:57:05 +02:00
dzaima
ae4c4a03ee copy ⊐ and ⊒ results to more correct element width arrays 2023-01-27 02:09:43 +02:00
dzaima
f13e82af62 fix leaking in comp.c 2023-01-26 19:27:43 +02:00
dzaima
5f9aeafec6 use switch for tokenization 2023-01-26 19:21:02 +02:00
dzaima
1a80cf312d more error checking in comp.c 2023-01-26 19:03:03 +02:00
dzaima
fbd4c79161 speed improvements for comp.c
not that it needs to be any faster
2023-01-26 03:46:25 +02:00
dzaima
422cc26054 dyadic •CompObj to replace compiler 2023-01-26 02:42:25 +02:00
dzaima
cc5a5752bf add •CompObj to NATIVE_COMPILER 2023-01-26 01:53:09 +02:00
dzaima
9abe7506ab native minimal compiler 2023-01-26 01:30:10 +02:00
dzaima
e231d36471 clean up gcc warnings 2023-01-25 17:16:24 +02:00
dzaima
c33cd81e06 use native ⁼ in ⍟(-n) 2023-01-25 15:30:54 +02:00
dzaima
73724acf1d use invalidFn_c1 instead of c1_bad 2023-01-25 15:09:07 +02:00
dzaima
31bd75630c make f=-DNO_RT functional 2023-01-25 15:05:23 +02:00
dzaima
6baa96c1e3 NEON squeeze 2023-01-25 02:22:53 +02:00
dzaima
88410c02e5 prep for NEON squeeze 2023-01-24 22:21:38 +02:00
dzaima
f91d3dfaf5 use num_squeeze directly for bytecode LSTO 2023-01-24 22:00:09 +02:00
dzaima
7768d6475f various OOM fixes 2023-01-23 23:49:27 +02:00
dzaima
b0dbd5c37b fix gcc build 2023-01-23 21:57:47 +02:00
dzaima
92c855920b unroll int×u1 2023-01-23 21:43:39 +02:00
dzaima
721dd8889b monadic arith 2023-01-23 01:22:40 +02:00
dzaima
7284eb7010 more manual unrolling in dyarith.singeli 2023-01-22 22:49:44 +02:00
dzaima
b1cace31ac don't make a slice on n⊏list 2023-01-22 19:31:11 +02:00
dzaima
679e90925a preserve ⟨a⟩ & ⟨a,b⟩ fill behavior for JIT 2023-01-22 19:24:34 +02:00
dzaima
162adbca68 more Singeli utilities 2023-01-22 18:04:52 +02:00
dzaima
86c2aa7e2c unroll non-overflowing dyarith loops for aarch64 2023-01-22 04:22:21 +02:00
dzaima
afe6707654 dyarith NEON support 2023-01-22 03:27:41 +02:00
dzaima
20daceaae5 move things in eachd_fn around 2023-01-22 01:42:20 +02:00
dzaima
7bd8331346 add more GS_UPD 2023-01-21 23:34:13 +02:00
dzaima
d84c04bc63 use incBy more 2023-01-21 00:09:47 +02:00
dzaima
e4578a345e fix 0‿1⊐"ab"‿"cd" & 0‿1∊˜"ab"‿"cd" 2023-01-19 16:04:44 +02:00
dzaima
b43184d629 fix 1‿2 +⎉0 1 2023-01-19 03:57:13 +02:00
dzaima
5cd1ee0ee3 fix NaN formatting 2023-01-18 20:08:18 +02:00
dzaima
5b8ac969db don't unroll on i8arr ↕n 2023-01-18 15:41:53 +02:00
dzaima
4945a90ff0 valgrind changes 2023-01-18 02:05:24 +02:00
dzaima
7b996c772a lea tmp,[CS+123]; mov [tmp],rax → mov [CS+123],rax 2023-01-17 20:55:39 +02:00
dzaima
40383906ec no, neither w nor h are 1, clang 2023-01-17 05:17:37 +02:00
dzaima
472e542ebd O(1) ⍉𝕩 when it doesn't reorder elements 2023-01-17 04:52:08 +02:00
dzaima
f9eb7f083c unshare shape 2023-01-17 04:38:55 +02:00
dzaima
21372a743a allow unsharing slices 2023-01-17 04:32:30 +02:00
dzaima
ec11e34dba clear old flags from in-place ¨ 2023-01-17 04:31:55 +02:00
dzaima
540b37ae6a shape replacement utility 2023-01-17 03:47:14 +02:00
dzaima
ec92b1d5ba better eachm_fn 2023-01-17 01:35:04 +02:00
dzaima
5de565f1b0 use 'debug/printf' for Singeli printf 2023-01-17 01:01:13 +02:00
dzaima
79c7aa30df reformat --help 2023-01-16 23:32:52 +02:00
dzaima
a483ac61d9 --version & version specifying in build/build 2023-01-16 19:31:14 +02:00
dzaima
dd82073c60 slightly faster ⍟list handling 2023-01-16 18:58:48 +02:00
dzaima
e0df77519e set replxx history max size higher
before it was 1000
2023-01-15 22:55:40 +02:00
dzaima
6c89982bbc unrolled Singeli loop option 2023-01-15 22:51:31 +02:00
dzaima
39605c1a98 add intrinsic file include for _mm_crc32_u32 2023-01-14 00:38:32 +02:00
dzaima
6c88499920 consistently check only for whether __BMI2__ is defined 2023-01-14 00:33:34 +02:00
dzaima
5b35c0a664 keep pext usage for bitarr/bitarr 2023-01-13 23:46:48 +02:00
dzaima
41212ab852 SLOW_PDEP option 2023-01-13 23:23:06 +02:00
dzaima
e987a5e4c0 some file path handling changes around windows 2023-01-13 19:16:13 +02:00
dzaima
376e343639 don't use manual copy loops in eachd_fn 2023-01-12 21:25:36 +02:00
dzaima
dbcd967e12 attempt at replxx-based printf 2023-01-12 17:13:42 +02:00
dzaima
46f657713c don't rely on bqn_fmt when !FORMATTER or CBQN isn't yet initialized 2023-01-09 02:30:29 +02:00
dzaima
86ae984af0 more print function renaming 2023-01-09 02:17:12 +02:00
dzaima
6f394c41ff windows: wide char printing 2023-01-09 02:00:22 +02:00
dzaima
a9c70d9d72 printing method overhaul 2023-01-09 01:42:44 +02:00
dzaima
381460e92e windows: getline fixes & discard trailing CRLF 2023-01-08 20:35:20 +02:00
dzaima
7b7c31e8b9 fix warning of unused pageSizeV for windows builds 2023-01-07 02:27:30 +02:00
dzaima
26c12e6724 add )exit & )off 2023-01-07 02:23:12 +02:00
dzaima
38ec07c34b use getline on Windows for the REPL 2023-01-06 18:02:02 +02:00
dzaima
6889121a28 getPageSize does need to return something 2023-01-06 06:10:12 +02:00
dzaima
b03bf80198 move Windows cases around
also don't make dir_create pretend it succeeds
2023-01-06 06:04:12 +02:00
actalley
815de4fd97
Address build errors on llvm-mingw to build bqn.exe with no SH, FFI, or repl support 2023-01-05 21:38:30 -06:00
dzaima
32f0a2f8fc check file size for whether we can allocate it
also "takes care" of the case when the file is a directory
2022-12-31 21:04:19 +02:00
dzaima
7d4677a8ff use COPY_TO instead of a loop in fbytes_c1
& ryu comment changes
2022-12-31 20:49:50 +02:00
dzaima
8da9c4e3a5 don't fail on •SH under VERIFY_TAIL 2022-12-31 20:31:13 +02:00
dzaima
7b3beec621 •ParseFloat 2022-12-31 20:22:22 +02:00
dzaima
fd38a5b241 use Ryu for number formatting 2022-12-31 03:19:06 +02:00
dzaima
99a82afec4 actually check character arrays in VERIFY_TAIL 2022-12-31 02:50:38 +02:00
dzaima
854acd580d respect !PROPER_FILLS in high-rank ↑ 2022-12-30 16:16:36 +02:00
dzaima
6e748ed800 remove unused rt_* globals 2022-12-30 01:50:00 +02:00
dzaima
7ff74d38e8 squeeze el_bit transpose result 2022-12-30 01:12:24 +02:00
dzaima
faf89abef0 fix ⊏˘ generic case 2022-12-30 00:21:07 +02:00
dzaima
5a9e5e8e50 native baseline high-rank 𝕨⊒𝕩 2022-12-30 00:10:03 +02:00
dzaima
ec169b1006 remove no longer necessary runtime loads 2022-12-29 23:59:44 +02:00
dzaima
83863a64fd fix gcc build 2022-12-29 23:46:24 +02:00
dzaima
b903a5d9ce fast num⊑˘simpleArr 2022-12-29 23:37:00 +02:00
dzaima
168db4cf01 fix rtWrap_unwrap refcounting 2022-12-29 23:36:50 +02:00
dzaima
0589d63cc5 fast v˙˘arr, fix arr˘arr 2022-12-29 23:36:37 +02:00
dzaima
1e3117d65f fast ⥊˘𝕩 2022-12-29 22:25:22 +02:00
dzaima
3408db320c fast num↑˘𝕩 & num↓˘𝕩 for 2≤=𝕩 2022-12-29 22:20:29 +02:00
dzaima
f6f0c12935 fast ⊑˘simpleArr 2022-12-29 22:07:38 +02:00
dzaima
a0feda9d8b fast arr˘ x 2022-12-29 22:04:06 +02:00
dzaima
47e95171f0 faster »˘ & «˘ on matrices, fix 0⊏˘↕3 2022-12-29 21:47:52 +02:00
dzaima
897ad8f649 clang really wants to special-case csz==1, but that's checked for before 2022-12-29 21:47:52 +02:00
dzaima
3f0c34e895 fast ≍˘𝕩 2022-12-29 21:47:52 +02:00
dzaima
4e88dc1004 faster ⊏˘ 2022-12-29 20:32:17 +02:00
dzaima
41efcfb632 fast ∾˝ & 𝕨ScalarFn˝𝕩 2022-12-29 18:46:14 +02:00
dzaima
8a132467d2 improve EACH_FILLS cases in ¨ & ⌜ 2022-12-28 22:38:14 +02:00
dzaima
6a9e03bdb1 use arr_shSetU/arr_shSetI inline
and use incG more in rank_c2
2022-12-28 17:31:02 +02:00
dzaima
a34bb0a433 don't unroll libc math loops 2022-12-28 16:51:17 +02:00
dzaima
4884580037 rearrange arr_shCopyUnchecked to not read SH(o) twice
and, while making a change that requires rebuilding all of CBQN, also make more of the arr_* fns return their Arr* argument to prepare for using them inline
2022-12-28 16:23:27 +02:00
dzaima
3b1b171828 don't need copying from bitarr to character arr 2022-12-28 16:17:16 +02:00
dzaima
c5a3c57f50 check for path being present for •path/•name/•state 2022-12-28 01:13:58 +02:00
dzaima
d8724e6658 update clangdCommands.bqn to new singeli defines, and enable by default 2022-12-27 23:59:48 +02:00
dzaima
33580b91ca don't error on unknown fill when not overtaking 2022-12-27 23:44:34 +02:00
dzaima
84bae20f79 don't inline load functions 2022-12-27 03:54:00 +02:00
dzaima
f424c720a7 full native 𝕨⌽𝕩 & 𝕨⌽⁼𝕩 2022-12-27 03:39:48 +02:00
dzaima
75fe558f1c detect writes past the end of a TALLOC allocation 2022-12-27 02:29:24 +02:00
dzaima
1afdd89075 allow defining custom dyadic inverses of builtins 2022-12-26 23:57:55 +02:00
dzaima
013897cc16 add runtime calls to WARN_SLOW 2022-12-26 23:15:56 +02:00
dzaima
78793ca700 -h → --help 2022-12-26 20:33:33 +02:00
dzaima
c818bf54b1 remove need of libffi from make forbuild 2022-12-26 19:38:24 +02:00
dzaima
48c2425e8b check result size being too large in ↑ 2022-12-26 18:16:11 +02:00
dzaima
7bcee07489 initialize shape properly in one case of high-rank take/drop
fixes 0‿4↑↕4 in debug builds, which just magically approximately worked before
2022-12-26 16:09:30 +02:00
dzaima
326d54e130 native list↑𝕩 & list↓𝕩 2022-12-25 13:38:43 +02:00
dzaima
8fad76762a reorder take_c2 2022-12-24 17:53:16 +02:00
dzaima
e2b45e33e1 simplify splitCells 2022-12-24 17:29:48 +02:00
dzaima
424448aa40 remove rt_memberOf & rt_indexOf 2022-12-24 17:12:35 +02:00
dzaima
95b1beb9db native high-rank ∊ & ⊐ 2022-12-24 17:08:27 +02:00
dzaima
3f40955d83 reorder indexOf_c2 2022-12-24 17:05:50 +02:00
dzaima
e3b5af8a44 fix 𝕨∊p & p⊐𝕩 with an empty high-rank p 2022-12-24 17:03:58 +02:00
dzaima
24dba9ba40 fix a bunch of small memory leaks around REPLXX
not that they'd cause any problems in practice - they're very small, and are in the one context where GC can actually run
2022-12-24 16:42:42 +02:00
dzaima
bb7fe02a45 separate checks for x86-64 & NEON Singeli importing
& restrict the processed Singeli files on NEON to the ones supported
2022-12-24 15:27:53 +02:00
dzaima
6d79ce9fb1 use arch-independent names for things suppported on both x86-64 & NEON 2022-12-24 15:26:05 +02:00
dzaima
d38316e670 BQN-based build system 2022-12-23 23:09:55 +02:00
dzaima
efcc6a28be add •file.path to autocomplete options 2022-12-23 18:08:33 +02:00
dzaima
bbc66cbf3f fix display of running multiline code while cursor isn't in last line 2022-12-23 18:06:58 +02:00
dzaima
381ce70212 backslash+enter → literal newline 2022-12-23 18:02:18 +02:00
dzaima
a6b22c75fd fast list⊐unit for more list types 2022-12-20 18:32:51 +02:00
dzaima
e69d8dc6e9 native ⌾(v⊸⌽) 2022-12-20 18:31:42 +02:00
dzaima
d05621f8f4 generic vector width calculation for NEON-supported files 2022-12-20 00:02:46 +02:00
dzaima
b91e72567d update Singeli submodule, conditional NEON includes 2022-12-19 23:31:44 +02:00
dzaima
43be832a37 fix highrank∊list deshaping the result in some scenarios 2022-12-18 23:58:10 +02:00
dzaima
8188886538 fast 𝔽´⟨x⟩ & 𝔽´⟨x,y⟩ 2022-12-18 23:49:09 +02:00
dzaima
aa4b92cb01 don't define •SH if not available 2022-12-18 23:40:55 +02:00
dzaima
29cecb0b6e remove •PrimInd 2022-12-18 23:16:36 +02:00
dzaima
6380364e62 native highrank∊vector 2022-12-18 23:05:58 +02:00
dzaima
30a6de0a31 add unrolling to aarch64 cmp.singeli 2022-12-18 22:45:42 +02:00
dzaima
f9c919d5ce getmask → homMask/topMask 2022-12-18 22:27:42 +02:00
dzaima
a07b94b889 more general equal.singeli, remove trailing semicolons 2022-12-18 21:55:20 +02:00
dzaima
2a32f52f8d blend renaming 2022-12-18 02:49:42 +02:00
dzaima
09b3279958 unified Singeli including mechanism 2022-12-18 01:54:07 +02:00
dzaima
9768526ddc move last bit of equal.singeli to loadBatch 2022-12-18 01:53:56 +02:00
dzaima
40f36fa366 Singeli-generated table for bits.singeli 2022-12-17 17:51:56 +02:00
dzaima
2c73199ed4 use Singeli-generated function tables for comparison 2022-12-16 19:04:58 +02:00
dzaima
f49dd5e8cf move cmp.singeli NaN check outside for non-x86_64 2022-12-16 17:39:51 +02:00
dzaima
6e3cb9a425 andIsZero→andAllZero; NEON andnz, blendF, sel, bitops.singeli 2022-12-16 00:44:32 +02:00
dzaima
cbd891b768 NEON widen, narrow, undefPromote; make undefPromote more restrictive 2022-12-15 23:19:00 +02:00
dzaima
6fac426f90 add v_dbl & v_half, NEON half{x,n} 2022-12-15 21:57:34 +02:00
dzaima
791e7d122f ucvt→narrow 2022-12-15 21:44:48 +02:00
dzaima
2b7291dbfb cvt{E,T,v} → widen{T,to_el{E,v}} 2022-12-15 20:31:00 +02:00
dzaima
9a9fade18a NEON loadLow, storeLow, andIsZero, maskstore, pack 2022-12-15 16:14:00 +02:00
dzaima
6f2d6bfb0b remove offset argument from maskstore; don't use w256 in mask.singeli 2022-12-15 16:13:45 +02:00
dzaima
77edc734e8 move storeLow & loadLow to sse3 & avx; fix NEON __not 2022-12-15 00:39:44 +02:00
dzaima
9fea5f1e13 neg(Any|All) → top(Any|All), msk(Any|All) → hom(Any|All) 2022-12-13 21:46:50 +02:00
dzaima
336da996b3 any/all vector check renaming 2022-12-13 02:03:17 +02:00
dzaima
7e13bf7f45 more neon.singeli 2022-12-12 02:59:11 +02:00
dzaima
444268f051 width{eltype{T}} → elwidth{T} 2022-12-12 00:07:50 +02:00
dzaima
2a1611ac81 start of neon.singeli 2022-12-11 23:59:07 +02:00
dzaima
0ef8800530 native F⌾⊢𝕩 & F⌾⊣𝕩 2022-12-08 13:26:04 +02:00
dzaima
3a3f213a92 assign broadcast{T,v} to T**v 2022-12-07 23:53:19 +02:00
dzaima
ce45d487a3 use mutating assignment 2022-12-07 23:24:26 +02:00
dzaima
07d4567a52 use spread arguments 2022-12-07 23:10:17 +02:00
dzaima
bf71fdb4f8 singeli now formats generators itself
or, well, has for a long time
2022-12-07 22:41:17 +02:00
dzaima
1b88c4cc62 don't allocate twice the memory requested 2022-12-07 22:22:34 +02:00
dzaima
af978bbc91 cave in and initialize variables in gcc 2022-12-03 23:58:33 +02:00
dzaima
6ca5050f4d reduce gcc warnings 2022-12-03 23:56:03 +02:00
dzaima
e4f4864ed2 define CBQN_EXPORT by default, add macro test for exactly gcc 2022-12-03 23:19:24 +02:00
dzaima
63e5e843ba fix f64arr/𝕩
`slow:` uses `s`, but the goto went to it before `s` was initialized
2022-12-03 23:18:43 +02:00
dzaima
5d61785912 some more x86_64.h reordering 2022-12-03 22:54:49 +02:00
dzaima
21984e1700 more x86_64.h cleanup 2022-12-03 15:21:05 +02:00
dzaima
95f9e781fa fix )profiler output merging all REPL entries 2022-12-03 14:14:32 +02:00
dzaima
732d1fdb34 remove ASMI/macro indirection 2022-12-02 17:26:10 +02:00
dzaima
bca0efb46c clean up x86_64.h 2022-12-02 17:10:04 +02:00
dzaima
0023e46ab8 config file & light theme 2022-12-02 16:49:49 +02:00
dzaima
7c6676a492 copy over custom _mm_loadu_si32 for old gcc 2022-12-01 13:37:01 +02:00
Marshall Lochbaum
4077596b89 Sparse initialization for ⌾(i⊸⊏) byte table 2022-11-30 16:32:06 -05:00
Marshall Lochbaum
d7a06befb5 Select implementation comments 2022-11-30 16:32:06 -05:00
Marshall Lochbaum
534c92f38a Select from <=128 booleans with shuffles 2022-11-29 22:14:57 -05:00
Marshall Lochbaum
fdfeb67e8f 2-register permutevar8x32 2022-11-29 20:27:45 -05:00
Marshall Lochbaum
41f464795f Selection with permutevar8x32 2022-11-29 18:45:22 -05:00
Marshall Lochbaum
c17448ed71 Faster bit selection 2022-11-29 11:29:25 -05:00
Marshall Lochbaum
dc6e49b289 Shuffle selection using >1 data register 2022-11-28 21:51:36 -05:00
Marshall Lochbaum
b651ca73d3 Move base{} utility to base.singeli 2022-11-28 13:55:19 -05:00
Marshall Lochbaum
43fba7cd78 Extend shuffle selection to >1 byte data 2022-11-28 13:55:19 -05:00
Marshall Lochbaum
6639c17b81 1-byte select with <=16 elements using shuffle 2022-11-27 21:03:58 -05:00
Marshall Lochbaum
e09d555eba Refactoring and renaming in select.singeli 2022-11-27 09:18:21 -05:00
Marshall Lochbaum
7cb8cf5772 Enable selection with AVX2 gather for i8 to i32 indices and 1- to 8-byte values 2022-11-27 09:18:21 -05:00
dzaima
dbc7c83f70 move usum to fold.c
but don't do anything useful with that because usum needs to also check for negative numbers
2022-11-27 15:45:33 +02:00
dzaima
afe6c0eba9 use 1•internal.Info for rtverify fails 2022-11-27 15:45:33 +02:00
dzaima
c0e06833c0 move B squeeze non-integer case out of twice-generated generator 2022-11-27 15:45:33 +02:00
dzaima
b0fcc017ce clean up squeeze.singeli 2022-11-27 15:45:33 +02:00
dzaima
0f3f91105e use anynePositive for squeeze.singeli 2022-11-27 15:45:33 +02:00
dzaima
15f6dd5d48 simplify 16-bit anynePositive 2022-11-27 15:45:33 +02:00
dzaima
5f85305f43 GPR mask testing 2022-11-27 15:45:33 +02:00
dzaima
efd79881cb use single mask array for all type widths 2022-11-27 15:45:33 +02:00
Marshall Lochbaum
d911eafd31 Inverses for •math.Fact and •math.LogFact 2022-11-26 14:20:52 -05:00
Marshall Lochbaum
a3df482acd Use non-inlined recursion for •math functions 2022-11-26 14:14:37 -05:00
dzaima
c4d0f8bdc4 highlight "." in numbers 2022-11-24 13:08:20 +02:00
dzaima
d383fe57a7 clean up whitespace 2022-11-24 01:26:35 +02:00
dzaima
34e37d1b1a increase gc root buffer size 2022-11-24 01:09:50 +02:00
dzaima
cf5ce07f51 simplify singeli xor/and/or definitions 2022-11-24 00:21:19 +02:00
Marshall Lochbaum
e60b942710 Formatting 2022-11-23 16:51:30 -05:00
Marshall Lochbaum
7715cbc158 Add •math.Sum with Singeli f64 implementation 2022-11-23 16:51:30 -05:00
Marshall Lochbaum
35aef1e5cd •math.Erf, •math.ErfC, and •math.LogFact 2022-11-23 16:46:39 -05:00
Marshall Lochbaum
9a1268ea3a Simplify •math.Comb implementation 2022-11-23 16:46:39 -05:00
Marshall Lochbaum
6eb21bd68c Factorial and combinations functions 2022-11-23 16:46:39 -05:00
Marshall Lochbaum
f6109b3985 Handle no-op and boolean cases of monadic arithmetic quickly 2022-11-23 16:46:39 -05:00
Marshall Lochbaum
58cd6f0f4e Other useful math: log2 log10 log1p expm1 hypot 2022-11-23 16:46:39 -05:00
Marshall Lochbaum
a0f6986832 Hyperbolic trig 2022-11-23 16:46:39 -05:00
Marshall Lochbaum
51840bc853 •math.GCD and •math.LCM for u64 arguments 2022-11-23 16:46:39 -05:00
dzaima
49636bae79 replace --dynamic-list with visibility 2022-11-22 15:36:32 +02:00
dzaima
6f5c329e22 noinline float product 2022-11-22 14:24:43 +02:00
dzaima
e7cc8ec444 use o2fG instead of union field 2022-11-21 23:26:25 +02:00
Marshall Lochbaum
31106c730c Fold implementation comments 2022-11-21 15:56:15 -05:00
Marshall Lochbaum
bda653e865 Shortcutting for boolean-valued integer ∨´ 2022-11-21 15:51:03 -05:00
Marshall Lochbaum
f1ca8793e3 Boolean comparison folds, monadic only 2022-11-21 15:36:06 -05:00
Marshall Lochbaum
47392acc33 Implement ×´ for all numeric cases, using f64 product when i32 fails 2022-11-21 15:19:27 -05:00
Marshall Lochbaum
52608ba6ce Singeli min/max-fold 2022-11-21 11:47:50 -05:00
Marshall Lochbaum
4b9a21c75f Do tack-fold with selection 2022-11-21 08:07:38 -05:00
Marshall Lochbaum
38683119c0 Handle some f64 cases in dyadic fold 2022-11-20 22:03:36 -05:00
Marshall Lochbaum
c977065c20 Move +⌈⌊ folds to function tables, unifying monadic and dyadic cases 2022-11-20 21:51:30 -05:00
Marshall Lochbaum
ebfd002793 Blocked +´ and f64 ⌈´ ⌊´ 2022-11-20 21:06:05 -05:00
Marshall Lochbaum
5bfdc26d00 Move fold to its own file 2022-11-20 20:06:35 -05:00
Marshall Lochbaum
b9a3a7886d Ordering function implementation comments 2022-11-20 19:57:00 -05:00
dzaima
24195780df reorder headers to allow OpenBSD hack to function 2022-11-20 18:22:51 +02:00
dzaima
6ff521b200 don't use IA/SH macros for assigning 2022-11-18 15:07:31 +02:00
dzaima
966b78693b fix test/precompiled.bqn 2022-11-18 00:16:34 +02:00
dzaima
5c65a1a7eb move precompiled bytecode to submodule 2022-11-17 23:20:07 +02:00
dzaima
1b64b4b548 better temporary replxx state handling 2022-11-17 19:18:33 +02:00
dzaima
35abd7f7e8 try $XDG_DATA_HOME before $HOME for REPL history directory 2022-11-17 19:18:33 +02:00
dzaima
ff36205a34 bind ctrl+n & ctrl+p 2022-11-17 19:18:33 +02:00
dzaima
1f5be9e69e backslash input 2022-11-17 19:18:33 +02:00
dzaima
9018051ce3 add •math.Atan2 autocomplete 2022-11-17 19:18:33 +02:00
dzaima
c60bdaba4d highlight 𝔽𝔾𝕎𝕏𝕊 as functions, reduce mut.h to calls.h 2022-11-17 19:18:33 +02:00
dzaima
bd6035cdef more system namespace field completion, actually add •ToUTF8 2022-11-17 19:18:33 +02:00
dzaima
a48488a132 enable bracketed paste, add sanity check in syntax highlighter 2022-11-17 19:18:33 +02:00
dzaima
07fa4a066b save replxx history more 2022-11-17 19:18:33 +02:00
dzaima
983452b409 system value completion 2022-11-17 19:18:33 +02:00
dzaima
feb7b8b9a0 replxx REPL 2022-11-17 19:18:33 +02:00
dzaima
94f8b189f7 REINIT_TAIL → FINISH_OVERALLOC 2022-11-17 18:56:46 +02:00
dzaima
a48f1f5eb0 fix -DMM=0 2022-11-17 18:56:46 +02:00
dzaima
55e8a43297 fix test/mut.bqn leaking references 2022-11-17 18:56:46 +02:00
dzaima
1ac5f0a49d arr_shCopy that doesn't compare IA 2022-11-17 18:56:46 +02:00
dzaima
179e0a37dc more tail verify work 2022-11-17 18:56:46 +02:00
dzaima
e5a9c7536d array tail overwriting checker 2022-11-17 18:56:46 +02:00
dzaima
360aabb7cc option to noinline mm_alloc & mm_free 2022-11-17 18:56:46 +02:00
dzaima
da1062c81c remove unused #undef 2022-11-17 18:55:59 +02:00
dzaima
aee745a7d6 fix argument names of C2 2022-11-17 18:13:29 +02:00
dzaima
db89e7a4bb fix function signatures & M1C2; use C1 & bit_negate more 2022-11-17 17:52:19 +02:00
Marshall Lochbaum
be9037cb62 Squeeze for ∨` instead of scalar checking for bool 2022-11-17 08:32:29 -05:00
Marshall Lochbaum
5985e92834 Initialized min/max-scan 2022-11-17 07:59:00 -05:00
Marshall Lochbaum
98d066c343 Use scan_max_num for sorted ⊒ 2022-11-16 21:20:54 -05:00
Marshall Lochbaum
1924aee61c f64 min/max scan 2022-11-16 21:14:32 -05:00
Marshall Lochbaum
136c1afacc Macro-ize integer min/max scan and add sorted flag 2022-11-16 20:49:57 -05:00
Marshall Lochbaum
ac7ff155d4 Pull out scan_add_bool() utility function from scan_c1() 2022-11-16 20:16:33 -05:00
Marshall Lochbaum
d6029985e8 Move scan to its own file 2022-11-16 19:48:37 -05:00
Marshall Lochbaum
93ef4bb2a9 Direct ⍷bool implementation 2022-11-15 22:03:50 -05:00
Marshall Lochbaum
f1142b4184 Branchless ⊒bool, moderately faster 2022-11-15 18:27:54 -05:00
Marshall Lochbaum
d6b09adb57 Add primitive and primitive-1modifier call macros to calls.h 2022-11-15 16:08:34 -05:00
Marshall Lochbaum
4506caf3ac Faster self-search on sorted 𝕩 using »⊸≠𝕩 2022-11-15 16:08:17 -05:00
Marshall Lochbaum
856eabd493 Self-search implementation comments 2022-11-14 21:08:44 -05:00
dzaima
8e631d7177 always take size in mm_alloc as u64 2022-11-14 22:42:32 +02:00
dzaima
3be97e6f61 update commented-out debug print 2022-11-14 20:44:19 +02:00
dzaima
a9737c22ea extract bit array negation to function 2022-11-14 19:47:53 +02:00
dzaima
7e934b04db better negation buffer handling 2022-11-14 19:02:44 +02:00
dzaima
63a2791361 add some NOUNROLLs 2022-11-14 18:00:00 +02:00
Marshall Lochbaum
85f54b2b25 Check for a small return type in large-range /⁼ with a sparse table 2022-11-13 18:00:10 -05:00
Marshall Lochbaum
cd16c8a1c7 Blocked 4-byte ⍋bool and ⍒bool with Singeli 2022-11-13 18:00:10 -05:00
Marshall Lochbaum
1647e98fd2 Use Singeli code for ⍋bool and ⍒bool with 1- and 2-byte result 2022-11-13 18:00:10 -05:00
Marshall Lochbaum
6bea10de21 Implementation comments and minor refactoring for /⁼ 2022-11-13 18:00:10 -05:00
Marshall Lochbaum
7acd9d5688 Indices/Replicate implementation comments 2022-11-13 18:00:10 -05:00
dzaima
c81e95730a fix -DMM=0 builds 2022-11-13 13:47:29 +02:00
dzaima
b244d7ecf5 disallow bitwise hashing for ¯0; prepare for mm_alloc taking u64 size 2022-11-12 23:45:39 +02:00
Marshall Lochbaum
7d56d61235 Hash table for Occurrence Count (⊒) 2022-11-12 15:47:59 -05:00
Marshall Lochbaum
1be4f4c2e7 Fix value movement when resizing Classify (⊐) hash 2022-11-12 15:47:59 -05:00
Marshall Lochbaum
62867f4533 Make brute-force Mark Firsts store result in a register (always <64 elements) 2022-11-12 15:47:59 -05:00
Marshall Lochbaum
8560ce0f4d Move hash table initializers to functions to save some binary space 2022-11-12 15:47:59 -05:00
Marshall Lochbaum
9adfb13355 Extend Mark Firsts hash table to handle Classify 2022-11-12 15:47:59 -05:00
Marshall Lochbaum
37d7694c52 64-bit Mark Firsts (∊) hash table 2022-11-12 15:47:59 -05:00
Marshall Lochbaum
dc7389a660 Mark Firsts hash table resizing policy tweaks 2022-11-12 15:47:59 -05:00
Marshall Lochbaum
2e1b64e0ca Resizable hash table for Mark Firsts (∊) 2022-11-12 15:47:59 -05:00
Marshall Lochbaum
8a551ab5ce Add 32-bit hash table for Classify (⊒) 2022-11-12 15:47:59 -05:00
Marshall Lochbaum
d8e4e7d96f Unify small-type and small-range tables for Classify (⊐) 2022-11-12 15:47:59 -05:00
dzaima
a64f0ada5f update src/README.md 2022-11-12 20:30:47 +02:00
dzaima
a7daeea6d9 fix (500⥊¯1‿5) ⊔ 500‿1‿3⥊3 2022-11-12 19:20:34 +02:00
Marshall Lochbaum
beb997ccb9 Avoid data movement for empty cells in Group 𝕩 2022-11-12 07:25:41 -05:00
dzaima
a1e12106ce use FILL_TO for more compact edge-case handling 2022-11-12 13:45:52 +02:00
dzaima
1241da4d74 fix group of array with empty cells 2022-11-12 13:41:45 +02:00
dzaima
eb880d7135 set result fill fill immediately instead of delaying to before return 2022-11-12 13:30:35 +02:00
Marshall Lochbaum
d2cdae4962 Fast case for bool⊔𝕩 using compress 2022-11-10 21:22:29 -05:00
Marshall Lochbaum
a3da018055 Group code for 1-bit cells 2022-11-10 14:52:45 -05:00
Marshall Lochbaum
6eb504118e Split out optimized Group cases and add comments 2022-11-10 14:52:45 -05:00
Marshall Lochbaum
801472d6d4 Implement bit_cpy versions of the Group methods that use memcpy 2022-11-10 14:52:45 -05:00
Marshall Lochbaum
e7c1918ba0 Native <` implementation using addition 2022-11-09 12:19:02 -05:00
dzaima
87d0fa5dc7 fix gcc 9 build 2022-11-08 16:59:17 +02:00
dzaima
6467530823 use ty_u 2022-11-08 16:56:43 +02:00
Marshall Lochbaum
812b97dc51 Mark boolean +` result sorted and squoze 2022-11-07 20:23:15 -05:00
Marshall Lochbaum
666a41ab12 1- and 2-byte Singeli boolean +` 2022-11-07 17:54:11 -05:00
Marshall Lochbaum
f1ff499244 Implement multiple result types for non-Singeli +`bool 2022-11-07 17:09:41 -05:00
Marshall Lochbaum
7b3c69f9da Take sum first in boolean plus-scan; special code for sparse or boolean sum 2022-11-07 15:35:53 -05:00
dzaima
4f9af9965c clangd compilation command generating utility 2022-11-06 18:34:47 +02:00
dzaima
fdbd36250b noinline writeNum, use loop instead of generated code 2022-11-06 03:17:31 +02:00
dzaima
fc059a77d0 noinline various things in main.c 2022-11-06 02:36:57 +02:00
dzaima
28d434a201 catch double-frees in debug mode 2022-11-06 02:11:12 +02:00
dzaima
f87a1155f5 store references instead of GC root functions to handle mutable roots
-0.21% binary size; mm_visit & mm_visitP got inlined in the gcFn-s, even though that's very pointless
2022-11-06 02:01:14 +02:00
dzaima
36111276c6 •math.Atan2 2022-11-05 20:36:54 +02:00