master: Fix %make-simd-pack-512-single

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  19040616e7e04ff181eefbfc126134b98d7aa571 (commit)
      from  d8768206569db5aeac11cde0ffad8035b72c472f (commit)

- Log -----------------------------------------------------------------
commit 19040616e7e04ff181eefbfc126134b98d7aa571
Author: Stas Boukarev <[email protected]>
Date:   Wed Aug 26 01:14:39 2026 +0300

    Fix %make-simd-pack-512-single
    
    Don't overwrite the inputs before they are used.
---
 src/compiler/x86-64/simd-pack-512.lisp | 12 +++---------
 tests/simd-pack-512-kmasks.pure.lisp   | 21 ---------------------
 2 files changed, 3 insertions(+), 30 deletions(-)

diff --git a/src/compiler/x86-64/simd-pack-512.lisp b/src/compiler/x86-64/simd-pack-512.lisp
index 5f5a1433e..4c2f7111f 100644
--- a/src/compiler/x86-64/simd-pack-512.lisp
+++ b/src/compiler/x86-64/simd-pack-512.lisp
@@ -631,16 +631,10 @@
               single-float single-float single-float single-float
               single-float single-float single-float single-float
               single-float single-float single-float single-float)
-  (:results (dst :scs (single-avx512-reg)))
   (:result-types simd-pack-512-single)
-  ;; (:temporary (:sc single-avx512-reg) t0 t1 t2 t3)
-  ;; temporaries explicitly in float16, float17, float18, and float19 regs
-  ;; avoids allocator putting temps in the lower zmm 16-regs, so we don't
-  ;; need a new sc class, which is a scarce resource in SBCL (only 60)
-  (:temporary (:sc single-avx512-reg :offset 16) t0)
-  (:temporary (:sc single-avx512-reg :offset 17) t1)
-  (:temporary (:sc single-avx512-reg :offset 18) t2)
-  (:temporary (:sc single-avx512-reg :offset 19) t3)
+  (:results (dst :scs (single-avx512-reg) :from (:argument 4)))
+  (:result-types simd-pack-512-single)
+  (:temporary (:sc single-avx512-reg) t0 t1 t2 t3)
   (:generator 5
      (inst vunpcklps t0 p0 p1)
      (inst vunpcklps t1 p2 p3)
diff --git a/tests/simd-pack-512-kmasks.pure.lisp b/tests/simd-pack-512-kmasks.pure.lisp
index f7ff2c9f9..3a9e2446a 100644
--- a/tests/simd-pack-512-kmasks.pure.lisp
+++ b/tests/simd-pack-512-kmasks.pure.lisp
@@ -264,27 +264,6 @@
     (assert (not (search "ALLOC" text)))
     (assert (not (search "KMOVQ" text)))))
 
-(with-test (:name :destroyed-c-registers-include-kmasks)
-  (let* ((vm (find-package "SB-VM"))
-         (fun (and vm (find-symbol "DESTROYED-C-REGISTERS" vm)))
-         (forms (and fun (funcall fun))))
-    (when (and fun forms)
-      (flet ((mask-temp-p (form)
-               (and (listp form)
-                    (eq (first form) :temporary)
-                    (let ((spec (second form)))
-                      (and (listp spec)
-                           (eq (getf (cdr spec) :sc) 'mask-reg))))))
-        (let ((mask-temps (remove-if-not #'mask-temp-p forms)))
-          (assert (= (length mask-temps) 7))
-          (assert
-           (equal
-            (sort (mapcar (lambda (form)
-                            (getf (cdr (second form)) :offset))
-                          mask-temps)
-                  #'<)
-            '(1 2 3 4 5 6 7))))))))
-
 (with-test (:name :avx512-state-tn-p)
   (let* ((vm (find-package "SB-VM"))
          (c (find-package "SB-C"))

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


hooks/post-receive
-- 
SBCL
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.