projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
0.9.13.47: Thread safety miscellania
[sbcl.git]
/
src
/
compiler
/
x86
/
arith.lisp
diff --git
a/src/compiler/x86/arith.lisp
b/src/compiler/x86/arith.lisp
index
3910de9
..
ce684ee
100644
(file)
--- a/
src/compiler/x86/arith.lisp
+++ b/
src/compiler/x86/arith.lisp
@@
-614,7
+614,7
@@
;; at the low five bits of the result.
(inst sar result (min 31 (- amount)))
;; Fixnum correction.
;; at the low five bits of the result.
(inst sar result (min 31 (- amount)))
;; Fixnum correction.
- (inst and result #xfffffffc)))))))
+ (inst and result (lognot fixnum-tag-mask))))))))
(define-vop (fast-ash-left/fixnum=>fixnum)
(:translate ash)
(define-vop (fast-ash-left/fixnum=>fixnum)
(:translate ash)
@@
-1057,8
+1057,9
@@
(define-logtest-vops))
(defknown %logbitp (integer unsigned-byte) boolean
(define-logtest-vops))
(defknown %logbitp (integer unsigned-byte) boolean
- (movable foldable flushable))
+ (movable foldable flushable always-translatable))
+;;; only for constant folding within the compiler
(defun %logbitp (integer index)
(logbitp index integer))
(defun %logbitp (integer index)
(logbitp index integer))
@@
-1071,6
+1072,8
@@
(inst jmp (if not-p :nc :c) target)))
(define-vop (fast-logbitp/signed fast-conditional/signed)
(inst jmp (if not-p :nc :c) target)))
(define-vop (fast-logbitp/signed fast-conditional/signed)
+ (:args (x :scs (signed-reg signed-stack))
+ (y :scs (signed-reg)))
(:translate %logbitp)
(:generator 6
(inst bt x y)
(:translate %logbitp)
(:generator 6
(inst bt x y)
@@
-1084,6
+1087,8
@@
(inst jmp (if not-p :nc :c) target)))
(define-vop (fast-logbitp/unsigned fast-conditional/unsigned)
(inst jmp (if not-p :nc :c) target)))
(define-vop (fast-logbitp/unsigned fast-conditional/unsigned)
+ (:args (x :scs (unsigned-reg unsigned-stack))
+ (y :scs (unsigned-reg)))
(:translate %logbitp)
(:generator 6
(inst bt x y)
(:translate %logbitp)
(:generator 6
(inst bt x y)