master: Stop touching avx512 registers in c-call
stassats via Sbcl-commits <[email protected]>
| Newsgroups | gmane.lisp.steel-bank.cvs |
|---|---|
| Message-ID | <[email protected]> |
The branch "master" has been updated in SBCL:
via 856ed453f33dbb1f218218f5181a2ae3d57acf41 (commit)
from d21baee18414dab4cb86d28dbcb8672f7a177c95 (commit)
- Log -----------------------------------------------------------------
commit 856ed453f33dbb1f218218f5181a2ae3d57acf41
Author: Stas Boukarev <[email protected]>
Date: Tue Aug 25 17:21:29 2026 +0300
Stop touching avx512 registers in c-call
Which forces avx512 instructions to be used.
This breaks avx512 spilling around foreign calls.
Fixes lp#2164994
---
src/compiler/x86-64/c-call.lisp | 30 +++++++++++++++---------------
1 file changed, 15 insertions(+), 15 deletions(-)
diff --git a/src/compiler/x86-64/c-call.lisp b/src/compiler/x86-64/c-call.lisp
index 1ed96f6cd..4302bc766 100644
--- a/src/compiler/x86-64/c-call.lisp
+++ b/src/compiler/x86-64/c-call.lisp
@@ -672,22 +672,22 @@ Floats are passed in integer registers."
,(car (push (make-symbol varname) vars))))
;; AVX-512 high ZMM registers, ZMM16-31.
- #+sb-simd-pack-512
- (loop for zmm from 16 below 32
- for varname = (format nil "ZMM~D" zmm)
- collect `(:temporary
- (:sc single-avx512-reg :offset ,zmm
- :from :eval :to :result)
- ,(car (push (make-symbol varname) vars))))
+ #+(and sb-simd-pack-512 nil)
+ (append
+ (loop for zmm from 16 below 32
+ for varname = (format nil "ZMM~D" zmm)
+ collect `(:temporary
+ (:sc single-avx512-reg :offset ,zmm
+ :from :eval :to :result)
+ ,(car (push (make-symbol varname) vars))))
- ;; AVX-512 opmask registers K1-K7.
- ;; K0 is not allocatable so not listed here
- #+sb-simd-pack-512
- (loop for mask from 1 to 7
- for varname = (format nil "MASK~D" mask)
- collect `(:temporary
- (:sc mask-reg :offset ,mask :from :eval :to :result)
- ,(car (push (make-symbol varname) vars))))
+ ;; AVX-512 opmask registers K1-K7.
+ ;; K0 is not allocatable so not listed here
+ (loop for mask from 1 to 7
+ for varname = (format nil "MASK~D" mask)
+ collect `(:temporary
+ (:sc mask-reg :offset ,mask :from :eval :to :result)
+ ,(car (push (make-symbol varname) vars)))))
`((:ignore ,@vars))))))
-----------------------------------------------------------------------
hooks/post-receive
--
SBCL