Commit graph

28829 commits

Author SHA1 Message Date
Douglas Katzman 69ad1e7908 De-obfuscate a loop
It avoided emitting a load of NIL more than once, but not relevant now.
2026-08-30 00:47:13 -04:00
Stas Boukarev 5a5ce63459 Disable a test
[skip ci]
2026-08-30 05:21:37 +03:00
Stas Boukarev 1899deda6a Distinguish between full and partial constant pass-through 2026-08-30 04:47:33 +03:00
Stas Boukarev 5bfa2103ec More thorough tracking of macro argument modifications 2026-08-30 04:17:15 +03:00
Stas Boukarev c338940576 More constant tracking for destructive modification detection 2026-08-30 04:00:50 +03:00
Stas Boukarev 8a66d3575b Resolve an improper use of functional-kind 2026-08-30 03:30:59 +03:00
Stas Boukarev e938a68479 (aref (vector a) 0) => a 2026-08-30 03:12:59 +03:00
Stas Boukarev d1b2b076bc Don't dx the list in (dx-let ((a (list a b))) (reverse a)) 2026-08-30 01:58:54 +03:00
Stas Boukarev 913710ac98 Don't specify :result-arg for REVERSE
It's a copy.
2026-08-30 01:49:37 +03:00
Stas Boukarev c1a075a94c Don't issue bt instead of cmp x, imm
Some checks are pending
CL-host / ecl (push) Waiting to run
CL-host / clisp (push) Waiting to run
CL-host / compare-xc-host-fasls (self, false) (push) Blocked by required conditions
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
Linux arm / build (push) Waiting to run
Linux arm64 / build () (push) Waiting to run
Linux qemu / build (ppc64le) (push) Waiting to run
Linux qemu / build (riscv64) (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 --with-nonstop-foreign-call) (push) Waiting to run
Linux / build (x86-64, --with-sb-fasteval --without-sb-eval --with-nonstop-foreign-call, fasteval) (push) Waiting to run
Linux / build (x86-64, --with-sb-thread --with-nonstop-foreign-call, sse4) (push) Waiting to run
Linux / build (x86-64, --with-sb-thread, ) (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 (x86-64, --with-mark-region-gc --with-nonstop-foreign-call) (push) Waiting to run
Mac / build (arm64, --with-mark-region-gc --with-nonstop-foreign-call) (push) Waiting to run
Mac / build (arm64, --with-sb-thread --with-nonstop-foreign-call) (push) Waiting to run
Mac / build (x86-64, --with-sb-thread --with-nonstop-foreign-call) (push) Waiting to run
Windows arm64 / build (arm64, clang-aarch64, clangarm64) (push) Waiting to run
Windows / build (x86-64, ucrt-x86_64, ucrt64) (push) Waiting to run
It is more compact but has lower throughput.
2026-08-29 23:29:48 +03:00
Stas Boukarev 100afd03eb x86-64, arm64: use tst instead of cmp if it can use immediates
If it's for all high bits set.
2026-08-29 23:07:14 +03:00
Stas Boukarev 58abf34057 x86-64: use test x, x instead of bt more often 2026-08-29 19:58:17 +03:00
Douglas Katzman cd160079fc Remove comment rendered obsolete by rev 0f08e80e
which removed the byte field in favor of using %set-symbol-value-in-thread
2026-08-29 12:50:12 -04:00
Douglas Katzman 24a5114631 Remove a symbol-macrolet
A macro simply avoided some editing in the change to use null-tn.
2026-08-29 12:47:19 -04:00
Stas Boukarev 12202855b6 arm64: store to the untagged pointer after allocation
Not much of a difference, maybe fewer dependencies.
2026-08-29 19:19:51 +03:00
Stas Boukarev a6ebdf5177 arm64/simd-pack: use stp during allocation 2026-08-29 19:17:46 +03:00
Stas Boukarev f5b9025430 sub-access-debug-var-slot: use mask-signed-field 2026-08-29 19:17:46 +03:00
Douglas Katzman a4faf7a921 Facilitate making array of lispobj fields in struct thread
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 () (push) Waiting to run
Linux qemu / build (ppc64le) (push) Waiting to run
Linux qemu / build (riscv64) (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 --with-nonstop-foreign-call) (push) Waiting to run
Linux / build (x86-64, --with-sb-fasteval --without-sb-eval --with-nonstop-foreign-call, fasteval) (push) Waiting to run
Linux / build (x86-64, --with-sb-thread --with-nonstop-foreign-call, sse4) (push) Waiting to run
Linux / build (x86-64, --with-sb-thread, ) (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 (arm64, --with-mark-region-gc --with-nonstop-foreign-call) (push) Waiting to run
Mac / build (arm64, --with-sb-thread --with-nonstop-foreign-call) (push) Waiting to run
Mac / build (x86-64, --with-mark-region-gc --with-nonstop-foreign-call) (push) Waiting to run
Mac / build (x86-64, --with-sb-thread --with-nonstop-foreign-call) (push) Waiting to run
Windows arm64 / build (arm64, clang-aarch64, clangarm64) (push) Waiting to run
Windows / build (x86-64, ucrt-x86_64, ucrt64) (push) Waiting to run
Rather than having to maintain a C typedef that matches the :LENGTH
specified in objdef, automatically propagate that length.
2026-08-29 13:27:04 +00:00
Douglas Katzman 210ad59740 build-all-cores 2026-08-29 13:25:17 +00:00
Stas Boukarev 8d53b4ca6e - debugging code 2026-08-29 10:10:37 +03:00
Stas Boukarev c8639b1234 dump-1-packed-dfun: match what compute-args returns 2026-08-29 09:56:51 +03:00
Stas Boukarev 4eb17c020e debug-dump: store package-ids
Saves 288KB on a 35MB core.
2026-08-29 09:56:51 +03:00
Stas Boukarev a8d783b39a debug-dump: don't store var symbol packages twice 2026-08-29 09:56:33 +03:00
Stas Boukarev 99c5b76053 Remove fast-read-var-u-integer
Unused.
2026-08-29 06:14:44 +03:00
Stas Boukarev 4891fda939 Slightly more compact debug register encoding
Assign any-reg and descriptor-reg the same id.
Both any-reg and descriptor-reg are tagged and are accessed in the
same way.
Saves 95K on a 35MB core.
2026-08-29 06:14:44 +03:00
Douglas Katzman 9e3da6bd41 Output lisp-readable list of cold function addresses
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 () (push) Waiting to run
Linux qemu / build (ppc64le) (push) Waiting to run
Linux qemu / build (riscv64) (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 --with-nonstop-foreign-call) (push) Waiting to run
Linux / build (x86-64, --with-sb-fasteval --without-sb-eval --with-nonstop-foreign-call, fasteval) (push) Waiting to run
Linux / build (x86-64, --with-sb-thread --with-nonstop-foreign-call, sse4) (push) Waiting to run
Linux / build (x86-64, --with-sb-thread, ) (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 (arm64, --with-mark-region-gc --with-nonstop-foreign-call) (push) Waiting to run
Mac / build (arm64, --with-sb-thread --with-nonstop-foreign-call) (push) Waiting to run
Mac / build (x86-64, --with-mark-region-gc --with-nonstop-foreign-call) (push) Waiting to run
Mac / build (x86-64, --with-sb-thread --with-nonstop-foreign-call) (push) Waiting to run
Windows arm64 / build (arm64, clang-aarch64, clangarm64) (push) Waiting to run
Windows / build (x86-64, ucrt-x86_64, ucrt64) (push) Waiting to run
2026-08-29 01:45:13 +00:00
Douglas Katzman cc13ffc583 x86-64: Disallow :full-call as an asm routine return style
Asm routines are not functions, and this more closely matches the supporting
code for arm, arm64, riscv, loongarch.
2026-08-28 19:10:21 -04:00
Douglas Katzman ca8de03628 Remove clc instructions that do nothing
Assembly routines for generic +,-,* are not tail-callable so they
do not need to adhere to the Lisp function return convention.
2026-08-28 18:51:29 -04:00
Douglas Katzman 8b6a050b46 Remove R/M/W memory operation from alloc-alien-stack-space
Do one more instruction but one fewer memory load, because SUB with a
memory operand counts as both a load and store.
2026-08-28 18:43:35 -04:00
Douglas Katzman 33c68e006d Replace mem-reg XADD with load+add+store
llvm-mca confirms that 3 instructions is better than 2 in this case.
XADD is mainly used with :LOCK so if you don't need :LOCK, you don't need XADD
2026-08-28 18:30:31 -04:00
Stas Boukarev db35d45612 (reverse (list a b c)) => (list c b a)
Some checks are pending
CL-host / sbcl (push) Waiting to run
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 / 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 () (push) Waiting to run
Linux qemu / build (ppc64le) (push) Waiting to run
Linux qemu / build (riscv64) (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 --with-nonstop-foreign-call) (push) Waiting to run
Linux / build (x86-64, --with-sb-fasteval --without-sb-eval --with-nonstop-foreign-call, fasteval) (push) Waiting to run
Linux / build (x86-64, --with-sb-thread --with-nonstop-foreign-call, sse4) (push) Waiting to run
Linux / build (x86-64, --with-sb-thread, ) (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 (x86-64, --with-sb-thread --with-nonstop-foreign-call) (push) Waiting to run
Mac / build (arm64, --with-mark-region-gc --with-nonstop-foreign-call) (push) Waiting to run
Mac / build (arm64, --with-sb-thread --with-nonstop-foreign-call) (push) Waiting to run
Mac / build (x86-64, --with-mark-region-gc --with-nonstop-foreign-call) (push) Waiting to run
Windows arm64 / build (arm64, clang-aarch64, clangarm64) (push) Waiting to run
Windows / build (x86-64, ucrt-x86_64, ucrt64) (push) Waiting to run
2026-08-28 22:38:50 +03:00
Stas Boukarev a60b90261b Allow (setf (slot-value x 'read-only-struct-slot)) at compile-time
Don't transform it to (setf struct-read-only-struct-slot).
It works when x or read-only-struct-slot are not known at compile
time, no reason to stop it.
2026-08-28 22:38:50 +03:00
Sylvia Harrington e4e628ab84 sb-simd: Fix a bunch of bugs
64-bit integer min/max don't have actual instructions, fake instead
Fix signed lane extraction not sign-extending
Add float abs/neg
Fix fsqrt encoding
Fix u32.4-from-u64.2/s32.4-from-s64.2 family, wrong size
Remove 64-bit integer vector mul, instruction doesn't exist
Add missing exports for integer min/max
Align spilled neon registers properly
Validate more vector instruction forms properly
Fix movi immediates
2026-08-28 22:38:41 +03:00
Christophe Rhodes 62f4bd1032 2.6.8: will be tagged as "sbcl-2.6.8" 2026-08-28 17:31:36 +01:00
Douglas Katzman 5a569e62ec Fix a C style warning
simd_pack_512_mask_slots is unused
2026-08-27 18:32:32 +00:00
Charles Zhang eb3d6740f5 Adjust NEWS
To be slightly more accurate.
2026-08-27 13:18:55 +02:00
Stas Boukarev ecf9f81f92 Adjust NEWS
That was done in the previous release.
2026-08-27 00:31:19 +03:00
Christophe Rhodes fa26f84013 Draft NEWS for sbcl-2.6.8 2026-08-26 22:22:46 +01:00
Douglas Katzman add94c4538 build-all-cores 2026-08-26 16:03:02 -04:00
Stas Boukarev 6b0c5fe453 Remove dstate-disp-n 2026-08-26 17:00:31 +03:00
Stas Boukarev 3d97f782f8 Protect a test with #+ 2026-08-26 08:48:52 +03:00
Stas Boukarev f19ea95f66 Add a test for foldable functions without a runtime function 2026-08-26 08:33:59 +03:00
Stas Boukarev d1fabf915b Fix emit-avx512-inst-imm
With correct evex detection
2026-08-26 05:06:52 +03:00
Stas Boukarev ad1b771806 Disassemble more avx512 instructions 2026-08-26 04:48:06 +03:00
Stas Boukarev fa59dfa2e7 Reset dstate-disp-n to 0 2026-08-26 04:17:38 +03:00
Stas Boukarev 885a2ddd61 Fix disassembler 2026-08-26 03:13:03 +03:00
Stas Boukarev 5119064945 Fix avx512 instruction encoding for ymm16-31
Emit EVEX prefixes for AVX2 instructions.
2026-08-26 02:45:02 +03:00
Stas Boukarev 9788b061b3 Remove debug output 2026-08-26 02:09:26 +03:00
Stas Boukarev 5c3fe7ae65 Don't save avx512 registers in alloc tramps
Declare the allocation routines with :save-p :avx512, to save only the
live registers around the call (which shouldn't happen in optimized
code).
2026-08-26 02:04:12 +03:00
Stas Boukarev 50e4701839 Save avx-512 registers around foreign calls
Without wiring any temporaries
2026-08-26 02:03:43 +03:00