Douglas Katzman
3d4fe67e29
build-all-cores
2026-09-09 16:14:36 -04:00
Douglas Katzman
e5daa56dc3
build-all-cores
2026-08-30 12:28:02 -04:00
Douglas Katzman
210ad59740
build-all-cores
2026-08-29 13:25:17 +00:00
Douglas Katzman
18f8a0c8ea
build-all-cores
2026-08-21 22:19:29 +00:00
Douglas Katzman
d1d85bbaa1
build-all-cores
2026-08-12 22:45:49 -04:00
Douglas Katzman
100c9c2bdc
Perform local common subexpression elimination for some memory loads
...
The technique is to find "equivalent" loads in between which there is no
computation that affects the result of the load. Also it needs a surrounding
LET, which is augmented with a new temp variable as if the user did that.
This is slightly deficient for various reasons:
1. it won't do anything without the LET
2. the more kinds of common subexpressions we allow (such as math),
the slower IR1-OPTIMIZE-COMBINATION is going to run
3. there are possibly other node types that should be allowed to intervene
On the plus side, it's not all that hard to extend the logic to accept
other functions as participants in common subexpressions.
All test cases plus a little bit of assistance from Gemini
2026-08-04 00:58:21 +00:00
Douglas Katzman
629a0df182
Fix failure to choose a jump table for a key type of (MOD 4)
...
Ironically it was working when the key's derived type was _not_ known
to be exactly (MOD 4) with a CASE over 4 keys.
2026-07-29 20:56:46 +00:00
Douglas Katzman
74f07eb8f4
Fix crossbuild-runner
...
It doesn't work to omit avx512 from the darwin config which may have been
inadvertent. It's suspicious that a new non-working Makefile was checked in.
And I'm not sure why there are 5 features keywords to do one thing
if all of them are in fact mandatory as of now.
2026-07-04 20:42:56 +00:00
Douglas Katzman
35332792be
build-all-cores
2026-03-29 23:59:15 -04:00
Douglas Katzman
223369311a
build-all-cores
2026-03-11 22:55:23 -04:00
Douglas Katzman
57ce36ce66
build-all-cores
2026-03-06 11:11:58 -05:00
Stas Boukarev
2cfca0fa32
ppc32, ppc64: remove LRA
...
TODO:
put return-pc-passing-location into the LR special register.
flag-based multiple value returns.
2026-02-28 02:22:29 +03:00
Douglas Katzman
2baf0b0a27
build-all-cores
2026-02-24 22:09:02 -05:00
Douglas Katzman
d71bb5f2ba
build-all-cores
2026-02-21 12:11:01 -05:00
Douglas Katzman
51aa6af904
build-all-cores
2026-02-11 08:48:39 -05:00
Douglas Katzman
9ffabf0a4d
build-all-cores
2026-01-20 14:14:37 -05:00
Douglas Katzman
b6f186ac9b
build-all-cores
2026-01-14 11:09:15 -05:00
Douglas Katzman
91d76e968a
build-all-cores
2026-01-02 21:01:13 -05:00
Douglas Katzman
2df0ca31ea
build-all-cores
2025-12-04 21:33:43 -05:00
Christophe Rhodes
a8450880fd
xperfecthash updates
2025-11-30 14:51:07 +00:00
Douglas Katzman
ffb8ede1dd
build-all-cores
2025-11-06 12:36:27 -05:00
Douglas Katzman
68e9440d17
build-all-cores
2025-09-08 08:12:59 -04:00
Douglas Katzman
3b5041d5a5
build-all-cores
2025-09-01 15:41:30 -04:00
Douglas Katzman
eb7d126e85
build-all-cores
2025-08-23 01:58:42 +00:00
Douglas Katzman
84543e0050
Rebuild xperfecthash files
2025-08-15 16:46:28 +00:00
Douglas Katzman
43af8c9253
Optimize out a few instructions in perfect hash calculation
...
For sets of only character or only fixnum, there is no need to guard
against an object having the wrong type. So instead of doing
(if (fixnump x) (ldb ... x)) just use (ldb ... (get-lisp-obj-address x))
eliminating an initial branch. Also the AND operation - at least on
x86-64 - avoids use of a raw constant. This just changes some shifts
in the perfect hash expression. It drops a bit (or more) of precision,
but we're already doing that in descriptor-hash32 for the situations
where the keyset contains a mixture of immediates and symbols.
2025-07-07 18:28:54 +00:00
Douglas Katzman
7b3816c6b1
Transform typep on frozen structure unions
2025-06-30 20:47:29 +00:00
Douglas Katzman
3d5139bef7
Use descriptor-hash32 only for a mixture of CASE key types
...
Otherwise, just CHAR-CODE or just SYMBOL-NAME-HASH may be enough.
2025-06-17 00:42:43 +00:00
Douglas Katzman
21a23d809a
Use perfect hash more often in sequence transforms
...
The ASSOC,MEMBER,etc functions were only handling symbols with perfect hashing.
This change extends them to fixnum and character keys.
2025-06-16 20:07:45 +00:00
Douglas Katzman
ba509cda22
Implement DESCRIPTOR-HASH32
...
which is just like POINTER-HASH (removed at rev 1857b789 ) but with at most
32 significant bits of output. Fewer for some platforms.
The vop reduces a multiway COND to an IF when computing the input to the perfect
hash function in a CASE expression whose keys include {symbol|character|fixnum}.
There's no need to test CHARACTERP or FIXNUMP, and 0 and #\null can both be keys
of the same CASE because they hash differently now.
2025-06-16 19:52:00 +00:00
Douglas Katzman
3655d025c9
Remove extraneous whitespace in xperfecthash files
2025-06-14 01:38:39 +00:00
Douglas Katzman
c5f93deeb9
Remove :linkage-cell-ud fixup flavor
...
Storing an extra value at the patch point lets us avoid using 2 flavors
2025-05-07 21:11:43 -04:00
Douglas Katzman
3cc36fad5a
Regenerate xoerfecthash files
2025-05-02 13:47:00 +00:00
Douglas Katzman
5c9841249d
Remove :symbol-value fixup flavor
2025-04-16 12:48:50 -04:00
Stas Boukarev
7f469f58a5
Faster make-sequence on simple types.
...
Don't call specifier-type on simple type specifiers.
2025-03-30 20:05:52 +03:00
Christophe Rhodes
c3168e3ebc
xperfecthash regeneration
2025-03-22 17:33:18 +00:00
Douglas Katzman
09294a674c
build-all-cores
2025-03-14 23:51:47 -04:00
Douglas Katzman
fc501b66ec
build-all-cores
2025-03-13 02:16:40 +00:00
Douglas Katzman
5d4f0ccd0c
Rebuild xperfecthash files from scratch
CL-host / ecl (push) Waiting to run
CL-host / clisp (push) Waiting to run
CL-host / ccl (push) Waiting to run
CL-host / cmucl (push) Waiting to run
CL-host / sbcl (push) Waiting to run
CL-host / compare-xc-host-fasls (ccl, false) (push) Blocked by required conditions
CL-host / compare-xc-host-fasls (clisp, false) (push) Blocked by required conditions
CL-host / compare-xc-host-fasls (cmucl, false) (push) Blocked by required conditions
CL-host / compare-xc-host-fasls (self, false) (push) Blocked by required conditions
Linux arm / build (push) Waiting to run
Linux arm64 / build (--with-sb-thread) (push) Waiting to run
Linux qemu / ppc64le (push) Waiting to run
Linux / build (x86, --with-sb-thread, ) (push) Waiting to run
Linux / build (x86, --without-sb-thread, ) (push) Waiting to run
Linux / build (x86, --without-sb-unicode, ) (push) Waiting to run
Linux / build (x86-64, --with-mark-region-gc) (push) Waiting to run
Linux / build (x86-64, --with-sb-fasteval --without-sb-eval, fasteval) (push) Waiting to run
Linux / build (x86-64, --with-sb-thread, ) (push) Waiting to run
Linux / build (x86-64, --with-sb-thread, sse4) (push) Waiting to run
Linux / build (x86-64, --without-sb-thread, ) (push) Waiting to run
Linux / build (x86-64, --without-sb-unicode, ) (push) Waiting to run
Mac / build (--without-sb-thread, x86-64) (push) Waiting to run
Mac / build (arm64, --with-mark-region-gc) (push) Waiting to run
Mac / build (arm64, --with-sb-thread) (push) Waiting to run
Mac / build (x86-64, --with-mark-region-gc) (push) Waiting to run
Mac / build (x86-64, --with-sb-thread) (push) Waiting to run
Windows / build (push) Waiting to run
2025-03-10 13:50:53 +00:00
Douglas Katzman
31b0c0d03e
build-all-cores
2025-02-17 15:23:50 -05:00
Douglas Katzman
c4dcdc659a
build-all-cores
2025-01-21 14:15:27 -05:00
Douglas Katzman
f9c1797aac
build-all-cores
2025-01-08 13:18:52 +00:00
Stas Boukarev
1aef34f7ef
Redo numeric-union-type.
...
Use a single type for numbers, numeric-union-type, even if it only
contains one range. Makes the methods simpler. A single-range type
could be optimized later.
Use a single type for rationals. It's easier to normalize unions of
rationals, ratios and integers.
Fixes lp#308937 lp#1734959 lp#2073544
2024-12-29 17:59:38 +03:00
Stas Boukarev
fcc83f20fa
Reduce node.lisp constructor lambda lists.
...
Smaller code, faster.
2024-12-19 08:47:17 +03:00
Stas Boukarev
f07ab4574d
Revert numeric-range-type
...
CL-host / ecl (push) Waiting to run
CL-host / clisp (push) Waiting to run
CL-host / ccl (push) Waiting to run
CL-host / cmucl (push) Waiting to run
CL-host / sbcl (push) Waiting to run
CL-host / compare-xc-host-fasls (ccl, false) (push) Blocked by required conditions
CL-host / compare-xc-host-fasls (clisp, false) (push) Blocked by required conditions
CL-host / compare-xc-host-fasls (cmucl, false) (push) Blocked by required conditions
CL-host / compare-xc-host-fasls (self, false) (push) Blocked by required conditions
Linux / build (x86, --with-sb-thread, ) (push) Waiting to run
Linux / build (x86, --without-sb-thread, ) (push) Waiting to run
Linux / build (x86, --without-sb-unicode, ) (push) Waiting to run
Linux / build (x86-64, --with-mark-region-gc) (push) Waiting to run
Linux / build (x86-64, --with-sb-fasteval --without-sb-eval, fasteval) (push) Waiting to run
Linux / build (x86-64, --with-sb-thread, ) (push) Waiting to run
Linux / build (x86-64, --with-sb-thread, sse4) (push) Waiting to run
Linux / build (x86-64, --without-sb-thread, ) (push) Waiting to run
Linux / build (x86-64, --without-sb-unicode, ) (push) Waiting to run
Mac / build (--without-sb-thread, x86-64) (push) Waiting to run
Mac / build (arm64, --with-mark-region-gc) (push) Waiting to run
Mac / build (arm64, --with-sb-thread) (push) Waiting to run
Mac / build (x86-64, --with-mark-region-gc) (push) Waiting to run
Mac / build (x86-64, --with-sb-thread) (push) Waiting to run
Windows / build (push) Waiting to run
Linux qemu / ppc64le (push) Failing after 0s
It don't work right.
2024-12-17 07:19:22 +03:00
Stas Boukarev
41a6964128
numeric-range-type: more thorough canonicalization.
...
CL-host / ecl (push) Waiting to run
CL-host / clisp (push) Waiting to run
CL-host / ccl (push) Waiting to run
CL-host / cmucl (push) Waiting to run
CL-host / sbcl (push) Waiting to run
CL-host / compare-xc-host-fasls (ccl, false) (push) Blocked by required conditions
CL-host / compare-xc-host-fasls (clisp, false) (push) Blocked by required conditions
CL-host / compare-xc-host-fasls (cmucl, false) (push) Blocked by required conditions
CL-host / compare-xc-host-fasls (self, false) (push) Blocked by required conditions
Linux / build (x86, --with-sb-thread, ) (push) Waiting to run
Linux / build (x86, --without-sb-thread, ) (push) Waiting to run
Linux / build (x86, --without-sb-unicode, ) (push) Waiting to run
Linux / build (x86-64, --with-mark-region-gc) (push) Waiting to run
Linux / build (x86-64, --with-sb-fasteval --without-sb-eval, fasteval) (push) Waiting to run
Linux / build (x86-64, --with-sb-thread, ) (push) Waiting to run
Linux / build (x86-64, --with-sb-thread, sse4) (push) Waiting to run
Linux / build (x86-64, --without-sb-thread, ) (push) Waiting to run
Linux / build (x86-64, --without-sb-unicode, ) (push) Waiting to run
Mac / build (--without-sb-thread, x86-64) (push) Waiting to run
Mac / build (arm64, --with-mark-region-gc) (push) Waiting to run
Mac / build (arm64, --with-sb-thread) (push) Waiting to run
Mac / build (x86-64, --with-mark-region-gc) (push) Waiting to run
Mac / build (x86-64, --with-sb-thread) (push) Waiting to run
Windows / build (push) Waiting to run
Linux qemu / ppc64le (push) Failing after 1s
Fixes lp#2091767
2024-12-14 14:44:56 +03:00
Stas Boukarev
21d84823f0
Add a dedicated type for unions of numeric-types.
...
Intersection, union, subtypep, difference are implemented more
efficiently on a vector of sorted ranges.
Fixes lp#2073544
2024-12-13 03:28:23 +03:00
Stas Boukarev
554360c906
xperfecthash
CL-host / ecl (push) Waiting to run
CL-host / clisp (push) Waiting to run
CL-host / ccl (push) Waiting to run
CL-host / cmucl (push) Waiting to run
CL-host / sbcl (push) Waiting to run
CL-host / compare-xc-host-fasls (ccl, false) (push) Blocked by required conditions
CL-host / compare-xc-host-fasls (clisp, false) (push) Blocked by required conditions
CL-host / compare-xc-host-fasls (cmucl, false) (push) Blocked by required conditions
CL-host / compare-xc-host-fasls (self, false) (push) Blocked by required conditions
Linux / build (x86, --with-sb-thread, ) (push) Waiting to run
Linux / build (x86, --without-sb-thread, ) (push) Waiting to run
Linux / build (x86, --without-sb-unicode, ) (push) Waiting to run
Linux / build (x86-64, --with-mark-region-gc) (push) Waiting to run
Linux / build (x86-64, --with-sb-fasteval --without-sb-eval, fasteval) (push) Waiting to run
Linux / build (x86-64, --with-sb-thread, ) (push) Waiting to run
Linux / build (x86-64, --with-sb-thread, sse4) (push) Waiting to run
Linux / build (x86-64, --without-sb-thread, ) (push) Waiting to run
Linux / build (x86-64, --without-sb-unicode, ) (push) Waiting to run
Mac / build (--without-sb-thread, x86-64) (push) Waiting to run
Mac / build (arm64, --with-mark-region-gc) (push) Waiting to run
Mac / build (arm64, --with-sb-thread) (push) Waiting to run
Mac / build (x86-64, --with-mark-region-gc) (push) Waiting to run
Mac / build (x86-64, --with-sb-thread) (push) Waiting to run
Windows / build (push) Waiting to run
Linux qemu / ppc64le (push) Failing after 1s
2024-12-02 01:58:28 +03:00
Christophe Rhodes
5fe3559bb2
build-all-cores from empty xperfecthash files
CL-host / ecl (push) Waiting to run
CL-host / clisp (push) Waiting to run
CL-host / ccl (push) Waiting to run
CL-host / cmucl (push) Waiting to run
CL-host / sbcl (push) Waiting to run
CL-host / compare-xc-host-fasls (ccl, false) (push) Blocked by required conditions
CL-host / compare-xc-host-fasls (clisp, false) (push) Blocked by required conditions
CL-host / compare-xc-host-fasls (cmucl, false) (push) Blocked by required conditions
CL-host / compare-xc-host-fasls (self, false) (push) Blocked by required conditions
Linux / build (x86, --without-sb-thread, ) (push) Waiting to run
Linux / build (x86, --without-sb-unicode, ) (push) Waiting to run
Linux / build (x86-64, --with-mark-region-gc) (push) Waiting to run
Linux / build (x86-64, --with-sb-fasteval --without-sb-eval, fasteval) (push) Waiting to run
Linux / build (x86-64, --with-sb-thread, ) (push) Waiting to run
Linux / build (x86-64, --with-sb-thread, sse4) (push) Waiting to run
Linux / build (x86-64, --without-sb-thread, ) (push) Waiting to run
Linux / build (x86-64, --without-sb-unicode, ) (push) Waiting to run
Linux / build (x86, --with-sb-thread, ) (push) Waiting to run
Mac / build (--without-sb-thread, x86-64) (push) Waiting to run
Mac / build (arm64, --with-mark-region-gc) (push) Waiting to run
Mac / build (arm64, --with-sb-thread) (push) Waiting to run
Mac / build (x86-64, --with-mark-region-gc) (push) Waiting to run
Mac / build (x86-64, --with-sb-thread) (push) Waiting to run
Windows / build (push) Waiting to run
Linux qemu / ppc64le (push) Failing after 1s
2024-11-29 12:18:31 +00:00
Douglas Katzman
741581124f
build-all-cores
2024-11-13 23:45:01 +00:00