[prev in list] [next in list] [prev in thread] [next in thread]
List: sbcl-commits
Subject: [Sbcl-commits] master: Optimize RATIONALP too.
From: stassats via Sbcl-commits <sbcl-commits () lists ! sourceforge ! net>
Date: 2023-06-29 20:54:16
Message-ID: 1688072056.814107.19913 () sfp-scm-5 ! v30 ! lw ! sourceforge ! com
[Download RAW message or body]
The branch "master" has been updated in SBCL:
via eccba8a43e432d9197d1ac368eac0c35ca0a8e48 (commit)
from 09cb73bb50d5289f37bd76bc9a250e0b3bb3f31a (commit)
- Log -----------------------------------------------------------------
commit eccba8a43e432d9197d1ac368eac0c35ca0a8e48
Author: Stas Boukarev <stassats@gmail.com>
Date: Thu Jun 29 23:48:16 2023 +0300
Optimize RATIONALP too.
---
src/compiler/arm64/type-vops.lisp | 4 +++-
src/compiler/x86-64/type-vops.lisp | 15 +++++++++------
2 files changed, 12 insertions(+), 7 deletions(-)
diff --git a/src/compiler/arm64/type-vops.lisp b/src/compiler/arm64/type-vops.lisp
index 581eb373d..9db962b33 100644
--- a/src/compiler/arm64/type-vops.lisp
+++ b/src/compiler/arm64/type-vops.lisp
@@ -54,7 +54,9 @@
(let ((drop-through (gen-label)))
(assemble ()
#.(assert (= fixnum-tag-mask 1))
- (inst tbz* value 0 (if not-p drop-through target)))
+ (when (types-equal-or-intersect (tn-ref-type value-tn-ref)
+ (specifier-type 'fixnum))
+ (inst tbz* value 0 (if not-p drop-through target))))
(%test-headers value temp target not-p nil headers
:drop-through drop-through
:value-tn-ref value-tn-ref
diff --git a/src/compiler/x86-64/type-vops.lisp b/src/compiler/x86-64/type-vops.lisp
index dc8cda90b..7dee64801 100644
--- a/src/compiler/x86-64/type-vops.lisp
+++ b/src/compiler/x86-64/type-vops.lisp
@@ -46,13 +46,16 @@
&key value-tn-ref immediate-tested)
(let ((drop-through (gen-label)))
(case n-fixnum-tag-bits
- (1 (%lea-for-lowtag-test temp value other-pointer-lowtag :qword)
+ (1
+ (%lea-for-lowtag-test temp value other-pointer-lowtag :qword)
+ (when (types-equal-or-intersect (tn-ref-type value-tn-ref)
+ (specifier-type 'fixnum))
(inst test :byte temp 1)
- (inst jmp :nz (if not-p drop-through target)) ; inverted
- (%test-headers value temp target not-p nil headers
- :drop-through drop-through :compute-temp nil
- :value-tn-ref value-tn-ref
- :immediate-tested immediate-tested))
+ (inst jmp :nz (if not-p drop-through target))) ; inverted
+ (%test-headers value temp target not-p nil headers
+ :drop-through drop-through :compute-temp nil
+ :value-tn-ref value-tn-ref
+ :immediate-tested immediate-tested))
(t
(generate-fixnum-test value)
(inst jmp :z (if not-p drop-through target))
-----------------------------------------------------------------------
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