dzaima
ed2198c06a
disable tail calls in bqn_fmt & bqn_repr
...
far from performance-critical, but helpful for stack traces
2024-07-15 00:52:00 +03:00
dzaima
f79e4c6d0a
make /(m?zip(128)?|pack)(Lo|Hi)/ not have Lo/Hi as part of name
...
instead being an optional 3rg arg
2024-07-15 00:52:00 +03:00
dzaima
a671ec9462
aarch64 bittab
2024-07-13 00:10:34 +03:00
dzaima
6dbe76727f
update offset for stacktraces on FLDG
2024-07-13 00:10:34 +03:00
dzaima
838639e610
fix gcc-9 build
2024-07-10 03:54:44 +03:00
dzaima
7aab7ceb8b
cleanup
2024-07-10 03:44:05 +03:00
dzaima
2bc1ba9f4a
fix aarch64 squeeze
2024-07-10 03:43:58 +03:00
dzaima
52d1e61fe0
don't bother early-exiting on masked iteration
2024-07-10 03:24:10 +03:00
dzaima
2fdd72f1c4
faster <SSE4.1 integer accumulating in squeeze
2024-07-10 03:18:17 +03:00
dzaima
a45925b0c6
fix SSE2 squeeze
2024-07-10 03:18:17 +03:00
dzaima
f941245b34
avoid needing two final folds on x86
2024-07-10 03:18:17 +03:00
dzaima
40a5c40bda
faster squeeze
2024-07-10 03:18:17 +03:00
dzaima
d66be091be
shufps Singeli mapping
2024-07-10 00:55:43 +03:00
dzaima
e96948cb64
Singeli zip128
2024-07-10 00:55:43 +03:00
dzaima
a8af920dc9
•internal.PureKeep
2024-07-10 00:55:43 +03:00
dzaima
01b1ee3637
make ⊢¨ more consistent with other PureIdentFn¨
...
incl. making ⊢¨ not leak xf under EACH_FILLS
2024-07-10 00:55:43 +03:00
dzaima
826179c83d
•internal utility for getting & setting object flags
2024-07-08 22:53:29 +03:00
dzaima
352f22f8f6
don't vectorize tiny loop
...
could theoretically maybe be beneficial for functions with a hilarious
number of arguments, but whatever. Improves perf on few-argument
functions from not unrolling/vectorizing.
2024-07-08 04:25:27 +03:00
dzaima
3e24442011
use ux in base cmp
2024-07-08 04:25:27 +03:00
Marshall Lochbaum
201fe1e57c
Extend fold_rows to any rank, as long as stride is 1
2024-07-05 17:44:42 -04:00
Marshall Lochbaum
48d77e722f
Extend ˝ to ´ conversion (for singleton cells) to any rank
2024-07-05 17:44:42 -04:00
Marshall Lochbaum
46704defb6
Convert list⊸↑˘ to a single ↑ call, likewise ↓ and ⌽
2024-07-05 17:44:42 -04:00
Marshall Lochbaum
ce98efc525
Transform atom⊸⌽⎉k into a single high-rank ⌽ call
2024-07-05 17:44:42 -04:00
Marshall Lochbaum
3b49294145
Specialize ApdMut to reshape if there's only one append
2024-07-05 17:44:42 -04:00
Marshall Lochbaum
76a40491e9
Remove some rank restrictions from for_cells_SA
2024-07-05 17:44:42 -04:00
Marshall Lochbaum
4450d36187
Better handling for «˘ and »˘ trivial cases
2024-07-05 17:44:42 -04:00
Marshall Lochbaum
d89a6da2da
Evaluate monadic «» on a length-1 argument by reshaping the fill
2024-07-05 17:44:42 -04:00
Marshall Lochbaum
6eca24ce0a
Special code for ∾˝˘ and fold-cells of empty
2024-07-05 17:44:42 -04:00
Marshall Lochbaum
9d5caad9a9
Compute Insert identity natively
2024-07-05 17:44:42 -04:00
Marshall Lochbaum
5d4391a3fd
Combine monadic ˘ with outer ˘ or ⎉
2024-07-05 17:44:42 -04:00
Marshall Lochbaum
a19b5401f7
Fast cases for monadic rank with cell length ≤1
2024-07-05 17:44:42 -04:00
Marshall Lochbaum
8766810db8
Rank-agnostic select_cells
2024-07-04 12:04:00 -04:00
Marshall Lochbaum
ab15eaeeeb
Length-1 reverse is a no-op
2024-07-04 12:04:00 -04:00
dzaima
2ce983041c
fix shared •HashMap value list
2024-06-30 14:06:05 +03:00
dzaima
47b5d7d832
fix harmless copy-paste error
2024-06-29 04:38:44 +03:00
dzaima
0319be27ea
fix bad error message on /⁼3‿3⥊0
2024-06-29 02:59:15 +03:00
dzaima
7eb60d4ec1
correct ElType comment
2024-06-29 02:33:46 +03:00
dzaima
6824b9a747
fix another unaligned load
2024-06-26 06:09:30 +03:00
dzaima
7474e51642
rename mask_of in spaced.singeli
...
otherwise confusable with maskOf in mask.singeli
2024-06-26 05:39:48 +03:00
dzaima
452065adaf
add magic incantation to make optimizer happy
2024-06-26 05:30:09 +03:00
Marshall Lochbaum
e365ecf7dc
Fix F`˘ on rank 0
2024-06-25 22:31:47 -04:00
Marshall Lochbaum
ace6105bf6
Fixes for ∧˝˘ and ∨˝˘ on long rows
2024-06-25 22:30:56 -04:00
dzaima
b6bf3f2da6
suppress clang ubsan warning
...
it's a true warning of actual UB and could conceivably be taken advantage of by a compiler, but is not currently so keep things pretty for now
2024-06-26 03:36:02 +03:00
dzaima
024ab669d5
fix ∧˝˘0‿8⥊0 running comparison functions on length-0 inputs
2024-06-26 03:09:43 +03:00
dzaima
6c110a29ee
use loadu_* & storeu_* for unaligned loads/stores
2024-06-26 03:09:43 +03:00
dzaima
ace06e96ae
document CMP_* non-zero length requirement
2024-06-26 03:09:43 +03:00
dzaima
7e15dfe104
make loadu_*/storeu_* take void*
2024-06-26 03:03:57 +03:00
Marshall Lochbaum
e952e4ca3e
Disable F´˘ special code when cell rank isn't 1
2024-06-23 17:06:37 -04:00
Marshall Lochbaum
5758853ccb
Can't call fold-rows special code with reduction length 0
2024-06-23 10:00:44 -04:00
Marshall Lochbaum
5f1c677d48
Support ∧∨ synonyms in fold_rows_bit
2024-06-20 11:05:59 -04:00
Marshall Lochbaum
355efd1eb4
Insert-cells and scan implementation comments, and minor tweaks
2024-06-19 18:36:53 -04:00
Marshall Lochbaum
4b0f105a7f
Implement short-row num⊏˘bool (including ⊣˝˘ ⊢˝˘) with fold code
2024-06-18 14:05:16 -04:00
Marshall Lochbaum
cb1b72fbb2
Extend boolean F˝˘ special code to any ranks
2024-06-18 07:46:31 -04:00
Marshall Lochbaum
1e6c7057e8
Extend boolean F`˘ special code to any frame and cell rank
2024-06-18 07:46:31 -04:00
Marshall Lochbaum
5e3cc6de81
Refactoring, simplification, comments
2024-06-18 07:46:31 -04:00
Marshall Lochbaum
a8b036ad08
Implement ≠˝˘ and =˝˘ like ∧∨ on width<64 boolean
2024-06-18 07:46:31 -04:00
Marshall Lochbaum
f0f130c42e
Use a lookup table for evenly-spaced masks, getting division results from those
2024-06-18 07:46:31 -04:00
Marshall Lochbaum
e6f1e04de2
Fast generic and pext-based ∧˝˘ and ∨˝˘ on width<64
2024-06-18 07:46:31 -04:00
Marshall Lochbaum
40bf3bfd1c
AVX2-based boolean short-row scans
2024-06-18 07:46:31 -04:00
Marshall Lochbaum
6d27dd391b
Clean up scan_rows_bit logic and implement -˘ as (2×⊣˘)-+`˘
2024-06-18 07:46:31 -04:00
Marshall Lochbaum
efde979fe9
Fast boolean ⊣`˘
2024-06-18 07:46:31 -04:00
Marshall Lochbaum
3b61568fda
Implement boolean list scans ->≤≥ using more common scans
2024-06-18 07:46:31 -04:00
Marshall Lochbaum
fde29684d7
Tweak for faster +`˘ on very short boolean rows
2024-06-18 07:46:31 -04:00
Marshall Lochbaum
8e47221c9f
Implement monadic boolean = with ≠
2024-06-18 07:46:31 -04:00
Marshall Lochbaum
8331a05547
Boolean ≠`˘ implementation
2024-06-18 07:46:31 -04:00
Marshall Lochbaum
bd64e8bcd2
Faster boolean +`˘ for short rows based on flattened prefix sum
2024-06-18 07:46:31 -04:00
Marshall Lochbaum
5591d0f4f0
Boolean row-wise scans ∧˘ and ∨˘
2024-06-18 07:46:31 -04:00
Marshall Lochbaum
7b4468c394
Move logical fold-rows functions to Singeli
2024-06-18 07:46:31 -04:00
Marshall Lochbaum
2590222988
Generic-architecture implementations of fold.singeli
2024-06-18 07:46:31 -04:00
Marshall Lochbaum
d29b4df50c
Boolean and, or, eq folds for row length >64
2024-06-18 07:46:31 -04:00
Marshall Lochbaum
c76e175719
Faster boolean +˝˘, and ≠˝˘ on row length >64
2024-06-18 07:46:31 -04:00
Marshall Lochbaum
ab4e5543a0
Implement matrix ⊣˝˘ and ⊢˝˘ with select_cells
2024-06-18 07:46:31 -04:00
dzaima
4ab84c05f6
handle header […]←rank0 properly
2024-06-16 14:00:40 +03:00
dzaima
563c30c596
allSame Singeli helper, make NEON homMask accept signed types
2024-06-16 14:00:40 +03:00
dzaima
d85f628d72
accept tuple argument in homMask
2024-06-14 04:28:53 +03:00
dzaima
73123f5bde
even faster »⎉1 & «⎉1 for narrow bitarr 𝕩
2024-06-06 23:36:45 +03:00
dzaima
cc3c6985ad
faster unit»⎉1𝕩 / unit«⎉1𝕩
2024-06-05 13:53:09 +03:00
dzaima
17339eceae
proper description of reshape_one
2024-06-05 13:52:25 +03:00
dzaima
b32f22ee89
fix MM=0 build
2024-06-05 03:32:41 +03:00
dzaima
ae3128c180
relax CHECK_IA in takedrop_highrank
...
future overflow in ria*elWidth when allocating shouldn't be a worry as all such calculations should be done in u64, and CHECK_IA(x, 1) guarantees that x is (much) less than 2^60 in both usz configurations
2024-06-05 02:30:00 +03:00
dzaima
e04819a28d
make TYARR_SZ always operate in u64
...
shouldn't change anything on 64-bit platforms as the sizeof in fsizeof should already give size_t
2024-06-05 02:23:15 +03:00
vylsaz
2a57022ccb
no ENT_SP_GC if profiler is not supported
2024-06-04 06:04:08 +00:00
dzaima
8044c560a4
faster atom∾atom
2024-06-01 16:22:34 +03:00
dzaima
44af7d4980
separate GC time in )profile
2024-06-01 00:33:14 +03:00
dzaima
d161f93a38
more Singeli refactoring
...
makes some conditions more strict
removes wrong el_m & el_s definitions
2024-05-26 04:25:54 +03:00
Marshall Lochbaum
56944b8985
Minor Singeli simplifications
2024-05-25 18:31:47 -04:00
Marshall Lochbaum
90863851b7
Use new Singeli type destructuring (no change to generated C)
2024-05-25 18:31:47 -04:00
dzaima
05690c001a
suppress false-positive gcc warnings
2024-05-24 04:01:05 +03:00
dzaima
5862c28c08
avoid conversion of i64 to ux for pointer offset
2024-05-22 20:41:40 +03:00
dzaima
f14583f995
faster ⍉ on large‿small⥊x
2024-05-22 20:07:48 +03:00
dzaima
33f784106d
actually properly mention reference counting in src/README.md
2024-05-20 01:39:26 +03:00
dzaima
44c8da7dc7
add checks for l>0 on equal() impls
...
some Singeli `fn equal` paths already assumed such, this just makes the requirement properly checked for, benefited from, and documented
2024-05-20 01:03:57 +03:00
dzaima
52fb05fcd4
unify ⌾(a⊸⊏) typed array paths, fix csz==0
2024-05-20 01:03:57 +03:00
Andrea Piseri
60a28a40ca
Clean up collision checking, use vector copy functions
2024-05-19 16:59:55 +02:00
dzaima
9f6151d92d
expand ⌾(a⊸⊏) tests, stylistic changes/cleanup
2024-05-19 02:14:08 +03:00
Andrea Piseri
99a23a97d8
Fix typo in the error message
2024-05-19 00:10:28 +02:00
Andrea Piseri
3738d0d65d
Formatting
2024-05-18 23:58:11 +02:00
Andrea Piseri
93188a9f90
Use COPY_TO and EQFN in the typed array code path
2024-05-18 23:56:13 +02:00
Andrea Piseri
06808414da
Separate code path for cxsz=1, fix out of bounds read for RNK(x)==0
2024-05-18 21:45:18 +02:00
Andrea Piseri
7f28308e44
native path in select_ucw for high rank 𝕩
...
`𝔽⌾(a⊸⊏)𝕩` now does not need to go through the self-hosted runtime if
`1<=𝕩`. Instead the `select_replace` helper function is parametrized
over the length of `𝕩` (`xl`) and item amount of the cell of `𝕩` (`xcia`).
- The `EQ` macro is modified to not immediately mark the cell as
populated, so that multiple replacements can be done on the cell
on the first assignment to it.
- The `DONE_CW` macro is invoked to mark the current cell as populated
when every element in it has been assigned.
- A loop over the cell contents is introduced to copy the elements in
`𝕩`. This should be fine as it is an easily predictable jump,
but a performance regression is possible and a separate code path
could be introduced in the future.
The change introduces more extensive checking on the shape of `𝔽`'s
result, as for high rank `𝕩` the requirement should be `(≢𝔽a⊏𝕩)≡(≢a)∾1↓≢𝕩`.
The old behaviour of `select_replace` is recovered by passing `xl=xia`
and `xcia=1` in the implementation of `pick_ucw`.
2024-05-18 12:12:17 +02:00
dzaima
4f898f38d2
various Singeli usage improvements and fixes
2024-05-11 05:57:30 +03:00
Marshall Lochbaum
b2e3a5ff74
Move from & to if/and for Singeli conditions
2024-05-10 10:26:28 -04:00
Marshall Lochbaum
4d6612cb16
Replace tuplen{} and tupsel{} with length{} and select{}
2024-05-10 09:49:58 -04:00
Marshall Lochbaum
12d7629f9c
Replace top-level if with if_inline
2024-05-10 08:36:24 -04:00
Marshall Lochbaum
526d9bbebe
Wrap non-destructuring type parameters in parens
2024-05-10 08:30:08 -04:00
dzaima
4a40739398
use printf & fprintf instead of putchar & co
2024-05-05 01:07:47 +03:00
dzaima
b657778205
fix •file.MapBytes in debug builds
2024-04-20 23:25:47 +03:00
dzaima
5600bb189a
fix ⟨1,2⋆62⟩/2⥊<⋈0
2024-04-20 21:24:51 +03:00
dzaima
de529e483b
make non-Singeli getRange_f64 check first element for integerness
2024-04-20 21:21:47 +03:00
dzaima
a6a088868c
fix ⟨⟩⍷⟨⟩
2024-04-04 03:54:55 +03:00
dzaima
3870189f85
fix 3‿3⍒"a" & "aa"⍒3‿3
2024-04-04 03:54:55 +03:00
dzaima
a75522c738
fix list⌽𝕩
2024-04-04 02:52:08 +03:00
dzaima
54cec2fdf5
split up CATCH_ERRORS into functional and semantic options
...
allows running a non-heapverify build that functions exactly as a heapverify one, while allowing ⎊ to function
2024-04-04 02:52:08 +03:00
dzaima
fd317ddce3
move heapverify CATCH_ERRORS change to build.bqn
2024-04-04 02:35:02 +03:00
dzaima
74f3b5a012
fix (17⥊'⍉') ∊ 4⥊<"a"
2024-04-03 22:14:04 +03:00
dzaima
61e068086e
fix (2⋆25)/(2⋆10)⥊10
2024-04-03 22:14:04 +03:00
dzaima
863da7083f
OOM on too large apd_sh_init result
2024-04-03 18:27:25 +03:00
dzaima
74d937a4fd
fix +⌜´↕0 leaking a reference
2024-04-03 17:13:06 +03:00
dzaima
d4f290a897
error on nonInteger⌽⟨⟩
2024-04-03 17:09:27 +03:00
dzaima
c1157f89a6
fix GroupLen properly
2024-04-03 05:59:35 +03:00
dzaima
55f7baf894
add debug check for correct array size calculation
2024-04-03 05:59:35 +03:00
dzaima
b8730798c1
explicitly handle empty cells in compress
2024-04-03 05:59:35 +03:00
dzaima
5ab49ab146
slash.c cleanup
2024-04-03 05:59:35 +03:00
dzaima
9973ab1a2e
make overallocation argument u64
2024-04-03 05:59:35 +03:00
dzaima
d77018f269
fix ⟨⟩⍷1‿0⥊0
2024-04-03 05:59:35 +03:00
dzaima
af0a40c732
fix ⍟ with empty typed repeat counts
2024-04-03 05:59:35 +03:00
dzaima
647a0b97e7
error on nested GC
2024-04-03 05:03:37 +03:00
dzaima
d21a77119f
more verification of •bit._cast types, remove 'n'
2024-03-30 17:55:43 +02:00
dzaima
ac069134c3
fix ⟨1.5⟩ ⊏ "ab"‿"cd"
2024-03-25 16:18:01 +02:00
dzaima
a94903cb12
fix 𝕨⊏unit
2024-03-25 16:18:01 +02:00
dzaima
96cf03311a
fix isPervasiveDyExt on 5˜
2024-03-25 16:18:01 +02:00
dzaima
10a58878d7
fix GroupLen on array elements outside i64 range
2024-03-25 16:18:01 +02:00
dzaima
79ea9ec02c
ensure desired updating order between envCurr and its pointed-to data
2024-03-25 16:18:01 +02:00
dzaima
b089337ee8
FFI: fix "&{*}"
2024-03-07 14:45:10 +02:00
dzaima
0c3d83c50b
fix ⊑˘ with bitarr 𝕩
2024-02-27 14:27:42 +02:00
dzaima
606e07ff14
fix vqtbl1 NEON argument type
2024-02-27 01:42:56 +02:00
dzaima
694920c273
minor code cleanup
2024-02-27 00:40:16 +02:00
dzaima
fef984b6fd
src/README.md cleanup and updating
2024-02-27 00:38:05 +02:00
dzaima
875f9185bf
use ux a tiny bit more, add a PLAINLOOP
2024-02-27 00:37:47 +02:00
dzaima
c2ca871ce5
FFI: fix "*:i8" built object storage
2024-02-27 00:35:36 +02:00
dzaima
5a13b49ee6
FFI: properly error on read of *a:b
2024-02-16 04:16:42 +02:00
dzaima
8d427100c2
FFI: fix calculated memory size of atom:b
2024-02-16 03:36:49 +02:00
dzaima
f221f90eda
error on non-number arguments for f32/f64 FFI writes
2024-02-15 17:55:53 +02:00
dzaima
09cb2aa5f8
gcc 14 should have "#pragma GCC novector"
2024-02-13 22:41:14 +02:00
dzaima
1318026c4e
a bunch of vfor
2024-02-13 22:34:16 +02:00
dzaima
3fc3338256
extract independent load from loop
2024-02-13 22:33:54 +02:00
dzaima
f981f6963b
use ux for loop index in reverse
...
makes gcc autovectorizer happier
2024-02-13 22:31:22 +02:00
dzaima
5abb09ca74
remove barely-useful elType==el_i32 path of reshape
...
perhaps could be replaced with an <=el_i32 path that still uses GetU but just skips numberness/integerness checks and ∘/⌊/⌽/↑ logic
2024-02-13 22:30:11 +02:00
dzaima
26a4bc9ac3
add guaranteedness of decrement on bqn_read*
2024-02-13 22:26:43 +02:00
dzaima
5c98930126
this was meant to be included in the previous commits
2024-02-13 22:24:35 +02:00
dzaima
b7afe7e597
fix nvm_x86_64.c's MMAP define
2024-02-13 22:19:17 +02:00
dzaima
210f6345c0
ensure desired allocation padding on NO_MMAP
2024-02-13 22:13:47 +02:00
dzaima
9577fa193c
make STORE_JIT_MAP build
2024-02-13 22:13:47 +02:00
dzaima
73a2b06703
more PLAINLOOP
2024-02-08 19:26:35 +02:00
dzaima
9cb0ab2fbb
Use getRange_fns for repeat_bounds
2024-02-08 19:25:30 +02:00
dzaima
52a583502d
get rid of 16-bit limits in FFI sizes
2024-02-06 22:33:54 +02:00
dzaima
b1e2e17edd
even more FFI cleanup
2024-02-06 22:31:57 +02:00
dzaima
2b30010c25
disallow writing array to pointer within pointer object
...
and while at it move a global to an argument
2024-02-06 20:29:24 +02:00
dzaima
74f7e4701d
disallow '&' outside of top-level type
2024-02-06 20:03:46 +02:00
dzaima
cb550bf885
more FFI cleanup
2024-02-06 15:17:49 +02:00
dzaima
b7f845300c
some FFI error message changes
2024-02-06 15:16:29 +02:00
dzaima
5a8ad03ff5
buildObj → readUpdatedObj, inline printFFIType
2024-02-06 15:16:29 +02:00
dzaima
677b341ad4
merge readRe & makeRe, reduce its result size to the proper size
...
previously the 1<<reW was used as the number of bytes to require but it's actually number of bits
2024-02-06 14:22:20 +02:00
dzaima
05ceb45b2f
fix ptr.Write doing weird things
2024-02-05 22:42:24 +02:00
dzaima
445cfcf15a
fix type of returned pointer within struct
2024-02-05 21:40:28 +02:00
dzaima
3c297ffeb8
add pointer reading within struct
2024-02-05 21:24:05 +02:00
dzaima
a8772dc3ae
fix **:i8
2024-02-05 04:54:55 +02:00
dzaima
b22c5d2883
get rid of sty_ptr
2024-02-05 04:51:12 +02:00
dzaima
7ab13e3c5a
refactor BQNFFIEnt & BQNFFIType
2024-02-05 04:14:02 +02:00
dzaima
102874c43f
support passing pointer objects to typed arguments
2024-02-05 01:29:49 +02:00
dzaima
a4c0424931
fix type equality checking on untyped pointer elements
2024-02-05 01:29:49 +02:00
dzaima
ac16b69fe1
add toggle to always run buildObj for testing object matching more
2024-02-05 01:29:49 +02:00
dzaima
61f142a1fd
type formatting for error messages
2024-02-05 01:29:49 +02:00
dzaima
7471c5c9f5
fix plain "&" argument being accepted
2024-02-05 00:34:55 +02:00
dzaima
e89d59c606
more proper error message
2024-02-04 23:27:28 +02:00
dzaima
7edcccdf82
initial pointer objects
2024-02-04 23:19:57 +02:00
dzaima
0ce728bcce
do a thing that should be done
2024-02-04 18:10:11 +02:00
dzaima
291d3ef5d7
deduplicate sh_c2 setup & output prep
2024-02-04 15:31:38 +02:00
dzaima
4f39729013
Merge pull request #106 from vylsaz/win-sh2
...
Implement •SH for Windows
2024-02-04 14:48:36 +02:00
dzaima
a3392fd6c1
fix casrt_c2 more
2024-02-04 14:47:43 +02:00
vylsaz
893ef857d7
Add comments
2024-02-04 02:45:25 +00:00
vylsaz
42e4956fb9
Replaced globals with argument to thread procedure
2024-02-04 02:35:47 +00:00
dzaima
2dfc8933bd
fix refcount leak in casrt_c2
2024-02-03 18:20:07 +02:00
vylsaz
74d3620839
Implement •SH
2024-02-03 01:45:56 +00:00
dzaima
1e8c390e6a
include file name in failed complication error messages
2024-02-01 22:52:55 +02:00
dzaima
88f8daedbf
proper bi_optOut handling
2024-02-01 21:26:08 +02:00
dzaima
592a8312ac
a bunch of PLAINLOOP
2024-02-01 21:26:08 +02:00
dzaima
1b26e85325
don't need to mark static globals as hidden
...
gcc complains about this
2024-02-01 21:26:08 +02:00
dzaima
c078f62b1f
add GLOBAL, INIT_GLOBAL, or const to globals
2024-02-01 21:13:39 +02:00
dzaima
6e39b59e73
use tuple destructuring in mask.singeli
2024-01-28 02:38:16 +02:00
dzaima
041be9a612
rearrange elses to get rid of clangd warning
2024-01-28 02:29:03 +02:00
dzaima
5b1fc39137
typo
2024-01-28 02:28:31 +02:00
vylsaz
7c58067620
Enable delete access
2024-01-27 15:47:35 +00:00
vylsaz
d570f8d303
Implement •file.MapBytes for Windows
2024-01-27 07:12:09 +00:00
vylsaz
f1cc597317
Util to report Windows error
2024-01-27 06:59:56 +00:00
dzaima
ffffdb5895
relax take/drop overflow checking
2024-01-19 18:03:54 +02:00
dzaima
0f691138c9
basic fix for •ReBQN{primitives⇐⟨','‿+⟩}
2024-01-19 18:02:24 +02:00
dzaima
83afa4ba99
rename functions in cmp.singeli
2024-01-11 23:36:03 +02:00
Marshall Lochbaum
f62981e370
Make Singeli if conditions have type u1
2024-01-10 17:10:53 -05:00
Marshall Lochbaum
7511420077
Fix first element of 1-byte Deduplicate result in some cases with 256 uniques
2024-01-07 21:27:12 -05:00
Marshall Lochbaum
2af2fb8e0c
Use ⍷⊸⊐ for Classify (⊐) on long 1-byte arguments if SIMD bit-table is available
2024-01-07 19:54:13 -05:00
dzaima
20185b57c5
fix nested •FFI calls, more FFI testing
2024-01-02 19:33:28 +02:00
dzaima
ca7e62d09f
fix •FFI with various arguments while mutable ones are present more
2024-01-02 18:30:33 +02:00
dzaima
381c03a456
fix •FFI with both a mutated & struct/array argument
2024-01-02 17:08:10 +02:00
Marshall Lochbaum
dbb6fbade1
Fast interleaving (≍˘) for pointer arrays
2023-12-31 16:28:59 -05:00
Marshall Lochbaum
5f3a4769be
Rename constrep.singeli to replicate.singeli; not just constant now
2023-12-31 15:30:20 -05:00
Marshall Lochbaum
e50ae40f8b
Port replicate-by-scan code from C to Singeli
2023-12-31 15:26:58 -05:00
Marshall Lochbaum
771496a25c
Pass slow-pdep build option to Singeli to suppress BMI2 bool/bool
2023-12-31 10:05:51 -05:00
Marshall Lochbaum
9604844d0b
Don't need ..._ before & in Singeli any more
2023-12-30 21:45:24 -05:00
Marshall Lochbaum
3584ebd7a6
Non-BMI2 bit interleaving implementation
2023-12-30 21:45:24 -05:00
Marshall Lochbaum
eb34213f0f
Fast ≍˘ for matching-type type-sized cells
2023-12-30 21:45:24 -05:00
Marshall Lochbaum
58f4f15f8f
Move more functionality to avx512.singeli
2023-12-30 10:43:40 -05:00
Marshall Lochbaum
92db3f15d0
Implement ≠` with AVX-512 clmul and GFNI
2023-12-30 10:43:06 -05:00
dzaima
9dc44ed1a9
make singeli/arch.bqn the source of SINGELI_AVX2
...
+ removes noting of lack of AVX2, which isn't shown from the makefile anyway
2023-12-30 02:09:56 +02:00
dzaima
18d2fa5f1c
rename Singeli select function
...
in anticipation to Singeli update which adds select as a builtin
2023-12-29 23:35:22 +02:00
dzaima
f11bebf8f4
fix usz=64 build
2023-12-28 19:17:57 +02:00
Marshall Lochbaum
dcb031d142
Make sure value in store{} has an appropriate type
2023-12-27 16:44:53 -05:00
dzaima
ce31945124
fix "ab"⍷⟨⟩
2023-12-27 19:16:34 +02:00
dzaima
add8ba353e
require MAP_FIXED_NOREPLACE on linux for JIT
2023-12-26 02:53:47 +02:00
dzaima
7c50d210ff
fix FreeBSD name conflict
2023-12-26 00:47:11 +02:00
dzaima
2e61f52d22
use MAP_EXCL on FreeBSD
...
OpenBSD should be fine as is, as it by default respects the hint if possible (I believe, at least, looking at its man page)
2023-12-26 00:47:11 +02:00
dzaima
f0c1962596
more typed ⌾(list⊸⊏)
2023-12-19 17:41:17 +02:00
dzaima
17c575edba
trivial fast path for >depth1arr
2023-12-16 01:45:29 +02:00
dzaima
470e77b6b3
more typed 𝔽⌾(m⊸/)
2023-12-15 23:53:26 +02:00
dzaima
72893fc2f5
cell-wise PervasiveDy` highRank
2023-12-15 21:43:07 +02:00
dzaima
66b5c1fc0a
fix a⊒b on mixed-width characters
2023-12-15 20:02:14 +02:00
dzaima
840c40748f
fix f64 scans on SSE2
2023-12-15 19:18:23 +02:00
dzaima
c785b3a7b8
squeeze created arrays in F⍟arr
2023-12-15 18:05:20 +02:00
dzaima
94b1d90995
SSE2 & NEON /⁼
2023-12-14 18:08:56 +02:00
dzaima
f71d2ff376
remove unused name variables
2023-12-14 17:45:04 +02:00
dzaima
7268c11df4
more fixes of path display
2023-12-13 22:03:00 +02:00
dzaima
a3a9403b59
fix paths shown in error stacktraces
2023-12-13 21:59:23 +02:00
dzaima
7bf379a44e
check that -o output is a list
2023-12-13 17:49:54 +02:00
dzaima
8cce6b7add
set re_map more properly
2023-12-12 13:32:46 +02:00
dzaima
653583eb1d
make •Import follow ReBQN
2023-12-11 14:02:38 +02:00
dzaima
ec4db6dbad
tiny Singeli include changes
2023-12-10 15:55:57 +02:00
dzaima
3454fbe3ee
defer negated ≤AVX2 comparison negation to GPR result
2023-12-05 17:37:37 +02:00
dzaima
b9b90fbe8f
improve error messages of o2i/o2i64/o2u64 & usum
2023-12-05 17:19:36 +02:00
dzaima
9984d720c9
move bit_sum to fold.c
2023-12-05 16:41:38 +02:00
dzaima
a439c64e85
fix error message of usum of i32arr encountering a negative element
2023-12-05 16:03:53 +02:00
dzaima
5c7ab3f9a8
change heuristic for when ⊔ separates filtering out ¯1
...
measurements of the previous one were affected by 08c4627686
2023-12-04 22:50:19 +02:00
dzaima
8870acd2c1
don't try to do 32 >> -1
2023-12-04 17:45:00 +02:00
dzaima
065f15d0e3
fix function type
2023-12-04 17:39:13 +02:00
dzaima
e2db41547d
change threshold for a 𝕨⊐𝕩 case
2023-12-04 17:37:35 +02:00
dzaima
d7c153286e
gc tests, more reuse removal
2023-12-04 12:07:03 +02:00
dzaima
baa23cb527
add a trailing newline to double-fatal message
...
apparently 'puts' has a trailing newline but 'fputs' doesn't
2023-12-04 11:35:34 +02:00
dzaima
ecb2d5f63a
fix GC referencing bug in reusing 𝕨𝔽`𝕩 by not bothering to reuse
2023-12-04 01:27:38 +02:00
dzaima
fcc939dbed
debug flag for running a GC every n'th allocation
2023-12-03 23:34:49 +02:00
dzaima
6573232694
macro option for an intentionally-bad hash function for testing purposes
2023-11-29 18:58:34 +02:00
dzaima
609980f950
comment about HashMap entry format
2023-11-29 18:05:08 +02:00
Marshall Lochbaum
72a9a95819
Make sure •HashMap table leaves last entry empty, as a sentinel
2023-11-28 20:08:27 -05:00
Marshall Lochbaum
51027cabe1
Fix GC-after-free with multiple hash resizes
2023-11-28 16:53:45 -05:00
Marshall Lochbaum
53beab531b
•HashMap key and value list compaction and methods to return those lists
2023-11-28 11:09:32 -05:00
Marshall Lochbaum
95f5e65b6c
•HashMap delete with backwards shift; no key/value compaction yet
2023-11-28 10:52:56 -05:00
Marshall Lochbaum
ce9f460e2c
•HashMap count and set functions
2023-11-28 10:33:41 -05:00
Marshall Lochbaum
016e428db6
Always store •HashMap keys and values as HArrs
2023-11-27 19:20:38 -05:00
Marshall Lochbaum
96c7f2eb1a
Move •HashMap implementation details to search.c
2023-11-27 19:20:38 -05:00
Marshall Lochbaum
77bfc7dd1a
Non-resizing static Robin Hood hashmap
2023-11-27 19:20:38 -05:00
Marshall Lochbaum
8edc965686
•HashMap stub with linear lookup
2023-11-27 19:20:38 -05:00
dzaima
adc4506ac8
fast path for ind integer checking
2023-11-26 22:16:53 +02:00
dzaima
4b67de5f83
don't need these comments
...
they're present in h.h, and trivial to determine from source anyway
2023-11-26 22:16:53 +02:00
dzaima
e9b7d027ca
cleanup & fix various build types
2023-11-26 16:56:26 +02:00
dzaima
01a60dceff
separate path & name, store path+name+args in state
2023-11-26 16:32:37 +02:00
dzaima
fe280613af
fix toHArr usage in another place
2023-11-26 15:53:44 +02:00
dzaima
789064140b
use isStr more, include builtin name in bad path messages
2023-11-26 15:37:41 +02:00
dzaima
31e4b29115
proper toHArr usage
2023-11-26 14:56:08 +02:00
dzaima
fce64987b1
helper for immediately-consumed block
2023-11-26 14:54:37 +02:00
dzaima
633bbc8112
don't need def_rt & def_glyphs either actually
...
+ clean up some gc_add-ing
2023-11-26 14:45:54 +02:00
dzaima
b28c1a8f01
get rid of global def_comp & def_compOpts, refcount fixes
2023-11-26 13:56:26 +02:00
dzaima
7dd398433b
fix native compiler
2023-11-26 13:46:07 +02:00
dzaima
71ade3e9c6
add missed decrements, expand test
2023-11-26 01:27:36 +02:00
dzaima
3f62a51305
system value inheriting
2023-11-26 01:21:11 +02:00
dzaima
a93ea4dbaf
base •ReBQN and •BQN onto outer re
2023-11-25 23:39:58 +02:00
dzaima
5e455372f0
more renaming & shuffling of things
2023-11-25 23:21:32 +02:00
dzaima
e25281518c
move more things into re
2023-11-25 23:21:32 +02:00
dzaima
7c28c64178
change •BQN and •ReBQN to dynamically-computed functions
2023-11-25 23:21:32 +02:00
dzaima
7214017bb2
move •BQN and •ReBQN to computed sysvals
2023-11-25 23:21:32 +02:00
dzaima
7e0204083e
name re parts
2023-11-25 23:21:32 +02:00
dzaima
7fb8ecfa86
rename things
2023-11-25 23:21:32 +02:00
dzaima
cd6da03fd9
always supply a valid re object
2023-11-25 23:21:32 +02:00
dzaima
7357820f19
start of compiler state refactoring
2023-11-25 23:21:32 +02:00
dzaima
dcf26f88d7
fix segfault during GC from compileAll's cpyHArr(objs)
2023-11-25 21:37:48 +02:00
dzaima
5458739cf2
don't have a ⌾ character in m_c8vec_0
...
name shouldn't ever be visible either, so shortening it while at it
2023-11-24 22:21:23 +02:00
dzaima
db0bb1378c
rearrange Body fields to pack better
2023-11-24 16:00:11 +02:00
dzaima
1d8479b589
apparently nothing uses the bc field in Comp anymore
2023-11-24 15:30:47 +02:00
dzaima
eb62b48e4e
don't inline wyhash make_secret
...
+ remove wyhashmap, we don't need it, it breaks on collisions
2023-11-24 15:24:28 +02:00
dzaima
f02c92ee6a
fix 3 ∨ "abc"
2023-11-23 18:13:51 +02:00
dzaima
8814a7e66e
use 2x unroll for i16→u1 copying to utilize two-vector homMask
2023-11-21 02:45:33 +02:00
dzaima
773429a959
recursive base-case of homMask
2023-11-21 02:40:50 +02:00
dzaima
08fa7d3d30
specialize x86-64 homMask of 2x[n]i16, use for comparison
2023-11-21 02:29:03 +02:00
dzaima
3ebfb24b0f
unroll copying to bitarr
...
+ clean up comparison code as bulk homMask is supported everywhere
2023-11-21 00:18:18 +02:00
dzaima
fe985722c2
move multi-vector homMask to allow NEON to override it
2023-11-21 00:18:18 +02:00
dzaima
d1f66dc75b
check created bitarr size for overflow
2023-11-18 19:56:39 +02:00
dzaima
56cbe4aa03
mulHi → mulh for high half of element result
...
to not be confused with mulwHi or zipHi where it means providing the high batch of elements
2023-11-18 00:43:20 +02:00
dzaima
c8cdaf0216
Clear assumption about assignment result in const-folder
2023-11-17 17:44:32 +02:00
dzaima
2b56a300bc
probably make ⊔ able to handle output subarray lengths over 2^32
...
still no support for (≠𝕨)≥2⋆32 though
2023-11-17 00:40:26 +02:00
dzaima
46e8ed1a3f
fix SSE4.2 usz=64 build
2023-11-13 23:28:30 +02:00
dzaima
59208af520
remove old group path
...
effectively only got used for f64arr 𝕨; could transform to doing just that, but its inefficient type of the group arrays make it bad for that too
2023-11-13 23:16:02 +02:00
dzaima
f037754880
more specific empty array types
2023-11-13 23:16:02 +02:00
dzaima
8c7a3be036
remove unused includes
2023-11-13 21:48:01 +02:00
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