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

List:       sbcl-commits
Subject:    [Sbcl-commits] master: arm64: don't transform %dpb if it's a simple OR/AND.
From:       stassats via Sbcl-commits <sbcl-commits () lists ! sourceforge ! net>
Date:       2023-09-29 18:12:20
Message-ID: 1696011140.217718.5993 () sfp-scm-5 ! v30 ! lw ! sourceforge ! com
[Download RAW message or body]

The branch "master" has been updated in SBCL:
       via  27bf0e5f5a5de908ad90abda7f5d115d67f8c712 (commit)
      from  4714e749519537cd7d54ad234d3966040aeb9f90 (commit)

- Log -----------------------------------------------------------------
commit 27bf0e5f5a5de908ad90abda7f5d115d67f8c712
Author: Stas Boukarev <stassats@gmail.com>
Date:   Fri Sep 29 18:44:02 2023 +0300

    arm64: don't transform %dpb if it's a simple OR/AND.
---
 src/compiler/arm64/vm.lisp | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/compiler/arm64/vm.lisp b/src/compiler/arm64/vm.lisp
index b06569ce8..237ff85c5 100644
--- a/src/compiler/arm64/vm.lisp
+++ b/src/compiler/arm64/vm.lisp
@@ -358,8 +358,15 @@
                                  (constant-arg (mod ,n-word-bits))
                                  ,type)
                                result-type)))
-         (if (or (validp 'signed-word 'signed-word)
-                 (validp 'word 'word))
+         (if (and (or (validp 'signed-word 'signed-word)
+                      (validp 'word 'word))
+                  (not (destructuring-bind (new size posn integer) (sb-c::basic-combination-args node)
+                         (declare (ignore posn integer))
+                         (and (constant-lvar-p new)
+                              (let* ((size (lvar-value size))
+                                     (new (ldb (byte size 0) (lvar-value new))))
+                                (or (zerop new)
+                                    (= (logcount new) size)))))))
              (values :direct nil)
              (values :default nil))))
       (signum

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


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