Commit graph

86 commits

Author SHA1 Message Date
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 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
Some checks are pending
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
Some checks failed
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.
Some checks failed
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
Some checks failed
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
Some checks failed
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
Douglas Katzman d6f5d95a8f Regenerate xperfecthash files 2024-10-18 23:31:37 +00:00