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
...
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
...
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
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)
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