Commit Graph

1057 Commits

Author SHA1 Message Date
dzaima
102a696164 fix ⟨2⟩↕a 2023-04-13 22:22:50 +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
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
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
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
b655dd4771 AVX2 counting function for small-range 1-byte /⁼ 2023-04-06 11:32:04 -04:00
dzaima
a0cdcdc898 fix self-search radix-based cases with 64-bit usz 2023-04-06 17:51:58 +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
0aca470931 more explicit inline requiring 2023-04-06 13:12:11 +03:00
dzaima
5a2b755191 move non-AVX2 x86-64 into SINGELI_SIMD 2023-04-02 15:55:49 +03:00
dzaima
00a5ddcb89 SSE2 squeeze 2023-04-02 15:04:00 +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
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
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
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
c0aaa6f615 SIMD transpose on 8-byte elements 2023-03-22 15:14:08 -04: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
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
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
8194f51b30 MAKE_MUT_INIT, move mut_init to mut.c 2023-03-11 16:52:09 +02:00
dzaima
01c457b77b make all cpy.*Arr function results Arr* 2023-03-11 16:51:13 +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
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
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
093beda394 faster path for 𝕨/𝕩 with non-boolean 𝕨 with sum 0 2023-03-03 13:41:20 +02:00
dzaima
6d03071ae6 SIMD i32 transpose 2023-02-26 01:19:54 +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
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
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
f700a3e150 pad input cells when needed for for ∊𝕩, ⊐𝕩, ⊒𝕩 2023-02-13 00:19:50 +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
05c1270344 better 𝕨⊏𝕩 with 0=×´≢𝕨 2023-02-02 00:40:52 +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
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
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
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
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
721dd8889b monadic arith 2023-01-23 01:22:40 +02:00
dzaima
b1cace31ac don't make a slice on n⊏list 2023-01-22 19:31:11 +02:00
dzaima
afe6707654 dyarith NEON support 2023-01-22 03:27:41 +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
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
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
540b37ae6a shape replacement utility 2023-01-17 03:47:14 +02:00
dzaima
dd82073c60 slightly faster ⍟list handling 2023-01-16 18:58:48 +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
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
a9c70d9d72 printing method overhaul 2023-01-09 01:42:44 +02:00
dzaima
38ec07c34b use getline on Windows for the REPL 2023-01-06 18:02:02 +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
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
854acd580d respect !PROPER_FILLS in high-rank ↑ 2022-12-30 16:16:36 +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