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