[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