[prev in list] [next in list] [prev in thread] [next in thread] 

List:       sbcl-commits
Subject:    [Sbcl-commits] master: arm64, load-immediate-word: fewer instructions for equal halves.
From:       stassats via Sbcl-commits <sbcl-commits () lists ! sourceforge ! net>
Date:       2023-09-28 10:30:41
Message-ID: 1695897041.641182.1094 () sfp-scm-2 ! v30 ! lw ! sourceforge ! com
[Download RAW message or body]

The branch "master" has been updated in SBCL:
       via  5a7d3ca2900f3a105a40fc406ca923ba9fd0ee53 (commit)
      from  114ee777445f96dcbf60a18bd2ea5d38f4d55669 (commit)

- Log -----------------------------------------------------------------
commit 5a7d3ca2900f3a105a40fc406ca923ba9fd0ee53
Author: Stas Boukarev <stassats@gmail.com>
Date:   Thu Sep 28 00:21:12 2023 +0300

    arm64, load-immediate-word: fewer instructions for equal halves.
---
 src/compiler/arm64/move.lisp | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/src/compiler/arm64/move.lisp b/src/compiler/arm64/move.lisp
index 75cec90d5..346b42b2e 100644
--- a/src/compiler/arm64/move.lisp
+++ b/src/compiler/arm64/move.lisp
@@ -85,6 +85,18 @@
                               ((= c d)
                                (try c a 0 b 16)))))))
              y)
+            ((and (not single-mov)
+                  (not single-instruction)
+                  (= (ldb (byte 32 0) val)
+                     (ldb (byte 32 32) val))
+                  (let ((a (ldb (byte 16 0) val))
+                        (b (ldb (byte 16 16) val)))
+                    (when (and (/= a #xFFFF 0)
+                               (/= b #xFFFF 0))
+                      (inst movz y a)
+                      (inst movk y b 16)
+                      (inst orr y y (lsl y 32)))))
+             y)
             ((and (< ffff-count zero-count)
                   (or single-mov
                       (not single-instruction)))

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


hooks/post-receive
-- 
SBCL


_______________________________________________
Sbcl-commits mailing list
Sbcl-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sbcl-commits
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic