I think the issue might be with f64.2-shuffle, which is used by f64.2-values, which in turn is used to define the horizontal functions mentioned above.
As above, f64.2-shuffle works fine with sb-eval and sb-fasteval.
You could "fix" f64.2-values and the horizontal functions with the following, but it would be better to figure out the cause of the f64.2-shuffle trouble.
From d4a01c7c1d10087e33c025023b727cd41cbd1441 Mon Sep 17 00:00:00 2001
From: me <email address hidden>
Date: Wed, 29 Mar 2023 01:32:58 +0000
Subject: [PATCH] Adjust sb-simd-sse2:f64.2-values
I think the issue might be with f64.2-shuffle, which is used by f64.2-values, which in turn is used to define the horizontal functions mentioned above.
(require "SB-SIMD") *evaluator- mode* :compile)
(setf sb-ext:
(sb-simd- sse2:f64. 2-shuffle (sb-simd- sse2:make- f64.2 1.2d0 3.9d0) 1)
=> #<SIMD-PACK 3.9000000000000d+0 1.2000000000000d+0>
(let ((x (sb-simd- sse2:make- f64.2 1.2d0 3.9d0))) sse2:f64. 2-shuffle x 1))
(sb-simd-
=> #<SIMD-PACK 0.0000000000000d+0 1.2000000000000d+0>
(let ((x (sb-simd- sse2:make- f64.2 1.2d0 3.9d0))) sse2:f64. 2-shuffle x 1))
(declare (optimize (debug 2)))
(sb-simd-
=> #<SIMD-PACK 3.9000000000000d+0 1.2000000000000d+0>
As above, f64.2-shuffle works fine with sb-eval and sb-fasteval.
You could "fix" f64.2-values and the horizontal functions with the following, but it would be better to figure out the cause of the f64.2-shuffle trouble.
From d4a01c7c1d10087 e33c025023b727c d41cbd1441 Mon Sep 17 00:00:00 2001 sse2:f64. 2-values
From: me <email address hidden>
Date: Wed, 29 Mar 2023 01:32:58 +0000
Subject: [PATCH] Adjust sb-simd-
--- sb-simd/ code/define- fake-vops. lisp | 2 +-
contrib/
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/contrib/ sb-simd/ code/define- fake-vops. lisp b/contrib/ sb-simd/ code/define- fake-vops. lisp .e0099c63e 100644 sb-simd/ code/define- fake-vops. lisp sb-simd/ code/define- fake-vops. lisp -from-p128 x)
index 4432791c4.
--- a/contrib/
+++ b/contrib/
@@ -420,7 +420,7 @@
(define-fake-vop f64.2-values (x)
(values
(%f64!
- (%f64!-from-p128 (%f64.2-shuffle x 1))))
+ (%f64!-from-p128 (%f64.2-unpackhi x x))))
(define-fake-vop f64.2-broadcast (x)
(let ((v (%f64.2!-from-f64 x)))
--
2.39.1