projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
1.0.4.63: Don't zeroize dynamic-extent simple-unboxed-arrays on x86 and x86-64
[sbcl.git]
/
src
/
compiler
/
ppc
/
arith.lisp
diff --git
a/src/compiler/ppc/arith.lisp
b/src/compiler/ppc/arith.lisp
index
aca19f4
..
67365c1
100644
(file)
--- a/
src/compiler/ppc/arith.lisp
+++ b/
src/compiler/ppc/arith.lisp
@@
-664,7
+664,11
@@
;;;; %LDB
(defknown %%ldb (integer unsigned-byte unsigned-byte) unsigned-byte
;;;; %LDB
(defknown %%ldb (integer unsigned-byte unsigned-byte) unsigned-byte
- (movable foldable flushable))
+ (movable foldable flushable always-translatable))
+
+;;; only for constant folding within the compiler
+(defun %%ldb (integer size posn)
+ (sb!kernel::%ldb size posn integer))
(define-vop (ldb-c/fixnum)
(:translate %%ldb)
(define-vop (ldb-c/fixnum)
(:translate %%ldb)
@@
-827,13
+831,18
@@
(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))
;;; We only handle the constant cases because those are the only ones
;;; guaranteed to make it past COMBINATION-IMPLEMENTATION-STYLE.
;;; --njf, 06-02-2006
(define-vop (fast-logbitp-c/fixnum fast-conditional-c/fixnum)
(:translate %logbitp)
;;; We only handle the constant cases because those are the only ones
;;; guaranteed to make it past COMBINATION-IMPLEMENTATION-STYLE.
;;; --njf, 06-02-2006
(define-vop (fast-logbitp-c/fixnum fast-conditional-c/fixnum)
(:translate %logbitp)
+ (:arg-types tagged-num (:constant (integer 0 29)))
(:temporary (:scs (any-reg) :to (:result 0)) test)
(:generator 4
(if (< y 14)
(:temporary (:scs (any-reg) :to (:result 0)) test)
(:generator 4
(if (< y 14)
@@
-843,6
+852,7
@@
(define-vop (fast-logbitp-c/signed fast-conditional-c/signed)
(:translate %logbitp)
(define-vop (fast-logbitp-c/signed fast-conditional-c/signed)
(:translate %logbitp)
+ (:arg-types signed-num (:constant (integer 0 31)))
(:temporary (:scs (signed-reg) :to (:result 0)) test)
(:generator 4
(if (< y 16)
(:temporary (:scs (signed-reg) :to (:result 0)) test)
(:generator 4
(if (< y 16)
@@
-852,6
+862,7
@@
(define-vop (fast-logbitp-c/unsigned fast-conditional-c/unsigned)
(:translate %logbitp)
(define-vop (fast-logbitp-c/unsigned fast-conditional-c/unsigned)
(:translate %logbitp)
+ (:arg-types unsigned-num (:constant (integer 0 31)))
(:temporary (:scs (unsigned-reg) :to (:result 0)) test)
(:generator 4
(if (< y 16)
(:temporary (:scs (unsigned-reg) :to (:result 0)) test)
(:generator 4
(if (< y 16)