Commit Graph

1139 Commits

Author SHA1 Message Date
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
1bd9467a2d cleanup 2023-05-04 12:27:13 +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
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
3b580cbd0c rename unit creation methods 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
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
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
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
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
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
e0479adee4 fix rank overflow check in 𝕨⥊𝕩 2023-04-22 11:53:54 +03:00
Marshall Lochbaum
b6590b0eab Move Insert implementation to fold.c, except the generic case 2023-04-21 22:00:08 +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
c3347d6815 move f32 to h.h, add reinterpreting helper methods 2023-04-21 16:32:35 +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
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
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
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
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
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
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