master: Avoid using avx512 registers in generic routines

stassats via Sbcl-commits <[email protected]> Sat, 11 Jul 2026 15:04:51 +0000
Newsgroups gmane.lisp.steel-bank.cvs
Message-ID <[email protected]>
The branch "master" has been updated in SBCL:
       via  14d60e26b1e9fc4b2ba63dd6d5f9a4c0e79b437e (commit)
      from  173185836fb315946fd67df72a224c806a2f89e2 (commit)

- Log -----------------------------------------------------------------
commit 14d60e26b1e9fc4b2ba63dd6d5f9a4c0e79b437e
Author: Stas Boukarev <[email protected]>
Date:   Sat Jul 11 18:03:28 2026 +0300

    Avoid using avx512 registers in generic routines
    
    Which forces avx512-capable allocation tramps.
    
    Fixes lp#2160413
---
 src/code/debug-int.lisp | 6 ++++++
 src/code/x86-64-vm.lisp | 6 ++++++
 2 files changed, 12 insertions(+)

diff --git a/src/code/debug-int.lisp b/src/code/debug-int.lisp
index c313f12bf..4e4bf26c0 100644
--- a/src/code/debug-int.lisp
+++ b/src/code/debug-int.lisp
@@ -2439,6 +2439,9 @@
                    #-c-stack-is-control-stack
                    (* (sb-c:sc+offset-offset sc+offset) n-word-bytes)
                    ,offset)))
+    ;; Don't make the whole thing use avx512 registers
+    #+sb-simd-pack-512
+    (declare (notinline %make-simd-pack-512-ub64 %make-simd-pack-512-single %make-simd-pack-512-double))
     (ecase (sb-c:sc+offset-scn sc+offset)
       ((#.any-reg-sc-number
         #.descriptor-reg-sc-number)
@@ -2731,6 +2734,9 @@
                    #-c-stack-is-control-stack
                    (* (sb-c:sc+offset-offset sc+offset) n-word-bytes)
                    ,offset)))
+    ;; Don't make the whole thing use avx512 registers
+    #+sb-simd-pack-512
+    (declare (notinline %make-simd-pack-512-ub64 %make-simd-pack-512-single %make-simd-pack-512-double))
     (ecase (sb-c:sc+offset-scn sc+offset)
       ((#.any-reg-sc-number
         #.descriptor-reg-sc-number)
diff --git a/src/code/x86-64-vm.lisp b/src/code/x86-64-vm.lisp
index f5fac6619..22529b398 100644
--- a/src/code/x86-64-vm.lisp
+++ b/src/code/x86-64-vm.lisp
@@ -35,6 +35,9 @@
 
 (defun context-float-register (context index format &optional integer)
   (declare (ignorable context index integer))
+  ;; Don't make the whole thing use avx512 registers
+  #+sb-simd-pack-512
+  (declare (notinline %make-simd-pack-512-ub64 %make-simd-pack-512-single %make-simd-pack-512-double))
   #-(or darwin linux openbsd win32 sunos (and freebsd x86-64))
   (progn
     (warn "stub CONTEXT-FLOAT-REGISTER")
@@ -245,6 +248,9 @@
 
 (defun %set-context-float-register (context index format value)
   (declare (ignorable context index format))
+  ;; Don't make the whole thing use avx512 registers
+  #+sb-simd-pack-512
+  (declare (notinline %simd-pack-512-singles %simd-pack-512-doubles %simd-pack-512-ub64s))
   #-(or linux win32)
   (progn
     (warn "stub %SET-CONTEXT-FLOAT-REGISTER")

-----------------------------------------------------------------------


hooks/post-receive
-- 
SBCL