master: Use a memory operand instead of loading into a register, 2

stassats via Sbcl-commits <[email protected]> Sat, 18 Jul 2026 10:44:38 +0000
Newsgroups gmane.lisp.steel-bank.cvs
Message-ID <[email protected]>
The branch "master" has been updated in SBCL:
       via  9939d748662c79b15bfbf0d3a590fe4442632929 (commit)
      from  88b11e809444329adec84e3a5e82bb4de1957241 (commit)

- Log -----------------------------------------------------------------
commit 9939d748662c79b15bfbf0d3a590fe4442632929
Author: Stas Boukarev <[email protected]>
Date:   Sat Jul 18 13:44:16 2026 +0300

    Use a memory operand instead of loading into a register, 2
---
 src/code/x86-64-simd.lisp | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/src/code/x86-64-simd.lisp b/src/code/x86-64-simd.lisp
index e1c06dcdb..403d095f5 100644
--- a/src/code/x86-64-simd.lisp
+++ b/src/code/x86-64-simd.lisp
@@ -2465,9 +2465,7 @@
                 (inst shl :dword tmp2 8)
                 (inst or :dword index tmp2)
 
-                (inst shl index 5)
-                (inst vmovdqu x2 (ea full-table index))    ; shuf-low
-                (inst vmovdqu x3 (ea 16 full-table index)) ; shuf-high
+                (inst shl :dword index 5)
 
                 ;; Use the high 4 bits of each byte to get an and-mask that
                 ;; will clear their tags
@@ -2478,9 +2476,8 @@
                 (inst vpand current current x4)
 
                 ;; Shuffle the bytes into 4-byte lanes
-                (inst vmovdqa next current)
-                (inst vpshufb current current x2) ; chars-low
-                (inst vpshufb next next x3)       ; chars-high
+                (inst vpshufb next current (ea 16 full-table index))    ; chars-high
+                (inst vpshufb current current (ea full-table index)) ; chars-low
 
                 (flet ((decode-lane (chars)
                          ;; Perform

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


hooks/post-receive
-- 
SBCL