Commit Graph

2726 Commits

Author SHA1 Message Date
dzaima
6f25e76e5d tune NEON inds⊸⊏˘f64arr 2024-07-28 02:47:12 +03:00
dzaima
d1d8e8be03 fix assertion on F⌾(⟨⟩⊸⊏) x 2024-07-26 23:25:26 +03:00
dzaima
42b8420af6 ignore unused label warning 2024-07-26 23:13:08 +03:00
dzaima
93fca7c628 fix overflow in index widening 2024-07-26 22:17:49 +03:00
dzaima
7cc1031f70 use outside-of-loop index widening on aarch64
slower as-is due to reduced supported ranges, but that's not an inherent restriction
2024-07-26 22:17:49 +03:00
dzaima
a486e87451 select-cells comments 2024-07-26 22:17:49 +03:00
dzaima
69ca524251 widen inds outside select-cells loops 2024-07-26 22:17:49 +03:00
dzaima
fce7567349 widen bits in bits⊸⊏˘mat to i8 2024-07-26 22:16:23 +03:00
dzaima
90646563a0 don't use zip method for select-cells 2024-07-26 22:16:23 +03:00
dzaima
4a874710c7 allow unhandled types for select_rows 2024-07-26 22:16:23 +03:00
dzaima
478c389c4b fast inds⊸⊏˘ mat 2024-07-26 22:16:23 +03:00
dzaima
0d7bf86182 baseline inds⊸⊏˘ mat 2024-07-26 22:16:23 +03:00
dzaima
f7dd900b3a faster 𝕨⊏𝕩, incl. aarch64 support 2024-07-26 00:01:54 +03:00
dzaima
cda5fd8595 make native compiler not error in debug builds 2024-07-26 00:01:54 +03:00
dzaima
3689e6105c support 2-modifiers in native compiler 2024-07-26 00:01:54 +03:00
dzaima
b7f7eda1ff more cells.h comments 2024-07-26 00:01:54 +03:00
dzaima
d6483a93d3 x86 unzip & unzip128 2024-07-26 00:01:54 +03:00
dzaima
2ed06e0db6 get_range Singeli binding 2024-07-26 00:01:54 +03:00
dzaima
2ca488dd66 aarch64 bool128 select 2024-07-26 00:01:54 +03:00
dzaima
0d5e77766a build select.singeli everywhere 2024-07-26 00:01:54 +03:00
dzaima
f1f4f1734e extract m_tyslice 2024-07-26 00:01:54 +03:00
dzaima
b99d5f23d5 extract bitsel to a function table 2024-07-26 00:01:54 +03:00
dzaima
2b323817ca make 𝕨⊏𝕩 error messages not differ across types 2024-07-26 00:01:54 +03:00
dzaima
e757b690dd mention src/singeli/ in src/README.md 2024-07-26 00:01:54 +03:00
dzaima
c274c35b1e Singeli @for_blocks 2024-07-26 00:01:54 +03:00
dzaima
079d3ffe91 better aarch64 homMask{[16]u8,[16]u8} 2024-07-26 00:01:54 +03:00
dzaima
0b69fa84cd NEON comparisons to 0 2024-07-26 00:01:54 +03:00
dzaima
c0573d602c don't error on non-vector types checked by genchk 2024-07-26 00:01:54 +03:00
dzaima
a9fbd0301d fix ∾˝⎉k refcounting 2024-07-15 00:56:02 +03:00
dzaima
3e9af0a910 fast-path for n•rand.Range 1 2024-07-15 00:56:02 +03:00
dzaima
2dd3798228 more Singeli cleanup 2024-07-15 00:56:02 +03:00
dzaima
2436c45f1d Singeli ceil_log2 for compile-time numbers 2024-07-15 00:52:00 +03:00
dzaima
66a8529d88 remove redundant parentheses in Singeli destructuring 2024-07-15 00:52:00 +03:00
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