* Rename {32,64}BIT-LOGICAL-FOO to WORD-LOGICAL-FOO in all ports.
This builds and passes all tests on x86, but I am unsure about
its effects on other ports.
* Declare SB!VM:WORD with DEF!TYPE so it is known to both the
host compiler and the cross-compiler (and we can use it in
DEFKNOWN declarations, e.g.)
* Fix errors in debug.impure.lisp test
changes in sbcl-0.8.14 relative to sbcl-0.8.13:
+ * incompatible change: the internal functions
+ SB-KERNEL:32BIT-LOGICAL-FOO, intended for providing efficient
+ logical operations on (UNSIGNED-BYTE 32) values, have been renamed
+ to SB-KERNEL:WORD-LOGICAL-FOO. Modular arithmetic should be used
+ instead of the old functions.
* new feature: on platforms where "dladdr" is available foreign
function names now appear in backtraces. (based on Helmut Eller's
work for CMUCL)
;; * Pull special case implementations of sequence functions (e.g.
;; %MAP-TO-LIST-ARITY-1 and %FIND-POSITION-IF-NOT) and
;; other sequence function implementation grot into SB-SEQ.
- ;; * Pull all the math stuff (%ACOS, %COSH, 32BIT-LOGICAL-AND...)
+ ;; * Pull all the math stuff (%ACOS, %COSH, WORD-LOGICAL-AND...)
;; into SB-MATH.
;; * Pull all the array stuff (%ARRAY-DATA-VECTOR, %RAW-REF-LONG,
;; WITH-ARRAY-DATA, ALLOCATE-VECTOR, HAIRY-DATA-VECTOR-REF...)
"*CONTROL-STACK-EXHAUSTION-SAP*"
"*UNIVERSAL-TYPE*" "*UNIVERSAL-FUN-TYPE*"
"*UNPARSE-FUN-TYPE-SIMPLIFY*" "*WILD-TYPE*"
- "32BIT-LOGICAL-AND" "32BIT-LOGICAL-ANDC1"
- "32BIT-LOGICAL-ANDC2"
- "32BIT-LOGICAL-EQV" "32BIT-LOGICAL-NAND"
- "32BIT-LOGICAL-NOR"
- "32BIT-LOGICAL-NOT" "32BIT-LOGICAL-OR"
- "32BIT-LOGICAL-ORC1"
- "32BIT-LOGICAL-ORC2" "32BIT-LOGICAL-XOR"
+ "WORD-LOGICAL-AND" "WORD-LOGICAL-ANDC1"
+ "WORD-LOGICAL-ANDC2"
+ "WORD-LOGICAL-EQV" "WORD-LOGICAL-NAND"
+ "WORD-LOGICAL-NOR"
+ "WORD-LOGICAL-NOT" "WORD-LOGICAL-OR"
+ "WORD-LOGICAL-ORC1"
+ "WORD-LOGICAL-ORC2" "WORD-LOGICAL-XOR"
"ALIEN-TYPE-TYPE"
"ALIEN-TYPE-TYPE-ALIEN-TYPE" "ALIEN-TYPE-TYPE-P"
"ALLOCATE-VECTOR"
(macrolet ((def (name &rest args)
`(defun ,name ,args
(,name ,@args))))
- (def 32bit-logical-not x)
- (def 32bit-logical-and x y)
- (def 32bit-logical-or x y)
- (def 32bit-logical-xor x y)
- (def 32bit-logical-nor x y)
- (def 32bit-logical-eqv x y)
- (def 32bit-logical-nand x y)
- (def 32bit-logical-andc1 x y)
- (def 32bit-logical-andc2 x y)
- (def 32bit-logical-orc1 x y)
- (def 32bit-logical-orc2 x y))
+ (def word-logical-not x)
+ (def word-logical-and x y)
+ (def word-logical-or x y)
+ (def word-logical-xor x y)
+ (def word-logical-nor x y)
+ (def word-logical-eqv x y)
+ (def word-logical-nand x y)
+ (def word-logical-andc1 x y)
+ (def word-logical-andc2 x y)
+ (def word-logical-orc1 x y)
+ (def word-logical-orc2 x y))
;;; Shift NUMBER by the low-order bits of COUNTOID, adding zero bits
;;; at the "end" and removing bits from the "start". On big-endian
(type index offset)
(values system-area-pointer index))
(let ((address (sap-int sap)))
- (values (int-sap #!-alpha (32bit-logical-andc2 address 3)
+ (values (int-sap #!-alpha (word-logical-andc2 address 3)
#!+alpha (ash (ash address -2) 2))
(+ (* (logand address 3) n-byte-bits) offset))))
(let ((mask (shift-towards-end (start-mask length)
dst-bit-offset)))
(declare (type unit mask))
- (32bit-logical-or
- (32bit-logical-and value mask)
- (32bit-logical-andc2
+ (word-logical-or
+ (word-logical-and value mask)
+ (word-logical-andc2
(funcall dst-ref-fn dst dst-word-offset)
mask))))))
(let ((interior (floor (- length final-bits) unit-bits)))
(let ((mask (end-mask (- dst-bit-offset))))
(declare (type unit mask))
(funcall dst-set-fn dst dst-word-offset
- (32bit-logical-or
- (32bit-logical-and value mask)
- (32bit-logical-andc2
+ (word-logical-or
+ (word-logical-and value mask)
+ (word-logical-andc2
(funcall dst-ref-fn dst dst-word-offset)
mask))))
(incf dst-word-offset))
(let ((mask (start-mask final-bits)))
(declare (type unit mask))
(funcall dst-set-fn dst dst-word-offset
- (32bit-logical-or
- (32bit-logical-and value mask)
- (32bit-logical-andc2
+ (word-logical-or
+ (word-logical-and value mask)
+ (word-logical-andc2
(funcall dst-ref-fn dst dst-word-offset)
mask)))))))))
(values))
(funcall dst-set-fn dst dst-word-offset
(if (zerop src-bit-offset)
(funcall src-ref-fn src src-word-offset)
- (32bit-logical-or
+ (word-logical-or
(shift-towards-start
(funcall src-ref-fn src src-word-offset)
src-bit-offset)
;; the first word.
(let ((src-bit-shift (- src-bit-offset dst-bit-offset)))
(if (> (+ src-bit-offset length) unit-bits)
- (32bit-logical-or
+ (word-logical-or
(shift-towards-start
(funcall src-ref-fn src src-word-offset)
src-bit-shift)
(declare (type unit mask orig value))
;; Replace the dst word.
(funcall dst-set-fn dst dst-word-offset
- (32bit-logical-or
- (32bit-logical-and value mask)
- (32bit-logical-andc2 orig mask)))))))
+ (word-logical-or
+ (word-logical-and value mask)
+ (word-logical-andc2 orig mask)))))))
((= src-bit-offset dst-bit-offset)
;; The source and dst are aligned, so we don't need to shift
;; anything. But we have to pick the direction of the loop in
(value (funcall src-ref-fn src src-word-offset)))
(declare (type unit mask orig value))
(funcall dst-set-fn dst dst-word-offset
- (32bit-logical-or (32bit-logical-and value mask)
- (32bit-logical-andc2 orig mask))))
+ (word-logical-or (word-logical-and value mask)
+ (word-logical-andc2 orig mask))))
(incf src-word-offset)
(incf dst-word-offset))
;; Just copy the interior words.
(value (funcall src-ref-fn src src-word-offset)))
(declare (type unit mask orig value))
(funcall dst-set-fn dst dst-word-offset
- (32bit-logical-or
- (32bit-logical-and value mask)
- (32bit-logical-andc2 orig mask))))))
+ (word-logical-or
+ (word-logical-and value mask)
+ (word-logical-andc2 orig mask))))))
(t
;; We need to loop from right to left.
(incf dst-word-offset words)
(value (funcall src-ref-fn src src-word-offset)))
(declare (type unit mask orig value))
(funcall dst-set-fn dst dst-word-offset
- (32bit-logical-or
- (32bit-logical-and value mask)
- (32bit-logical-andc2 orig mask)))))
+ (word-logical-or
+ (word-logical-and value mask)
+ (word-logical-andc2 orig mask)))))
(dotimes (i interior)
(decf src-word-offset)
(decf dst-word-offset)
(value (funcall src-ref-fn src src-word-offset)))
(declare (type unit mask orig value))
(funcall dst-set-fn dst dst-word-offset
- (32bit-logical-or
- (32bit-logical-and value mask)
- (32bit-logical-andc2 orig mask))))))))))
+ (word-logical-or
+ (word-logical-and value mask)
+ (word-logical-andc2 orig mask))))))))))
(t
;; They aren't aligned.
(multiple-value-bind (words final-bits)
(get-next-src))
(let ((mask (end-mask (- dst-bit-offset)))
(orig (funcall dst-ref-fn dst dst-word-offset))
- (value (32bit-logical-or
+ (value (word-logical-or
(shift-towards-start prev src-shift)
(shift-towards-end next (- src-shift)))))
(declare (type unit mask orig value))
(funcall dst-set-fn dst dst-word-offset
- (32bit-logical-or
- (32bit-logical-and value mask)
- (32bit-logical-andc2 orig mask)))
+ (word-logical-or
+ (word-logical-and value mask)
+ (word-logical-andc2 orig mask)))
(incf dst-word-offset)))
(dotimes (i interior)
(get-next-src)
- (let ((value (32bit-logical-or
+ (let ((value (word-logical-or
(shift-towards-end next (- src-shift))
(shift-towards-start prev src-shift))))
(declare (type unit value))
(if (> (+ final-bits src-shift) unit-bits)
(progn
(get-next-src)
- (32bit-logical-or
+ (word-logical-or
(shift-towards-end next (- src-shift))
(shift-towards-start prev src-shift)))
(shift-towards-start next src-shift)))
(orig (funcall dst-ref-fn dst dst-word-offset)))
(declare (type unit mask orig value))
(funcall dst-set-fn dst dst-word-offset
- (32bit-logical-or
- (32bit-logical-and value mask)
- (32bit-logical-andc2 orig mask))))))))
+ (word-logical-or
+ (word-logical-and value mask)
+ (word-logical-andc2 orig mask))))))))
(t
;; We need to loop from right to left.
(incf dst-word-offset words)
(unless (zerop final-bits)
(when (> final-bits (- unit-bits src-shift))
(get-next-src))
- (let ((value (32bit-logical-or
+ (let ((value (word-logical-or
(shift-towards-end next (- src-shift))
(shift-towards-start prev src-shift)))
(mask (start-mask final-bits))
(orig (funcall dst-ref-fn dst dst-word-offset)))
(declare (type unit mask orig value))
(funcall dst-set-fn dst dst-word-offset
- (32bit-logical-or
- (32bit-logical-and value mask)
- (32bit-logical-andc2 orig mask)))))
+ (word-logical-or
+ (word-logical-and value mask)
+ (word-logical-andc2 orig mask)))))
(decf dst-word-offset)
(dotimes (i interior)
(get-next-src)
- (let ((value (32bit-logical-or
+ (let ((value (word-logical-or
(shift-towards-end next (- src-shift))
(shift-towards-start prev src-shift))))
(declare (type unit value))
(setf next prev prev 0))
(let ((mask (end-mask (- dst-bit-offset)))
(orig (funcall dst-ref-fn dst dst-word-offset))
- (value (32bit-logical-or
+ (value (word-logical-or
(shift-towards-start prev src-shift)
(shift-towards-end next (- src-shift)))))
(declare (type unit mask orig value))
(funcall dst-set-fn dst dst-word-offset
- (32bit-logical-or
- (32bit-logical-and value mask)
- (32bit-logical-andc2 orig mask)))))))))))))))
+ (word-logical-or
+ (word-logical-and value mask)
+ (word-logical-andc2 orig mask)))))))))))))))
(values))
\f
;;;; the actual bashers
`(multiple-value-bind (,word ,bit) (floor ,offset 32)
(setf (deref (slot ,fd-set 'fds-bits) ,word)
(logand (deref (slot ,fd-set 'fds-bits) ,word)
- (sb!kernel:32bit-logical-not
+ ;; FIXME: This may not be quite right for 64-bit
+ ;; ports of SBCL. --njf, 2004-08-04
+ (sb!kernel:word-logical-not
(truly-the (unsigned-byte 32) (ash 1 ,bit))))))))
;;; not checked for linux...
(emit-label done)
(move res result))))
-(define-source-transform 32bit-logical-not (x)
+(define-source-transform word-logical-not (x)
`(logand (lognot (the (unsigned-byte 32) ,x)) #.(1- (ash 1 32))))
-(deftransform 32bit-logical-and ((x y))
+(deftransform word-logical-and ((x y))
'(logand x y))
-(define-source-transform 32bit-logical-nand (x y)
- `(32bit-logical-not (32bit-logical-and ,x ,y)))
+(define-source-transform word-logical-nand (x y)
+ `(word-logical-not (word-logical-and ,x ,y)))
-(deftransform 32bit-logical-or ((x y))
+(deftransform word-logical-or ((x y))
'(logior x y))
-(define-source-transform 32bit-logical-nor (x y)
+(define-source-transform word-logical-nor (x y)
`(logand (lognor (the (unsigned-byte 32) ,x) (the (unsigned-byte 32) ,y))
#.(1- (ash 1 32))))
-(deftransform 32bit-logical-xor ((x y))
+(deftransform word-logical-xor ((x y))
'(logxor x y))
-(define-source-transform 32bit-logical-eqv (x y)
+(define-source-transform word-logical-eqv (x y)
`(logand (logeqv (the (unsigned-byte 32) ,x) (the (unsigned-byte 32) ,y))
#.(1- (ash 1 32))))
-(define-source-transform 32bit-logical-orc1 (x y)
+(define-source-transform word-logical-orc1 (x y)
`(logand (logorc1 (the (unsigned-byte 32) ,x) (the (unsigned-byte 32) ,y))
#.(1- (ash 1 32))))
-(define-source-transform 32bit-logical-orc2 (x y)
+(define-source-transform word-logical-orc2 (x y)
`(logand (logorc2 (the (unsigned-byte 32) ,x) (the (unsigned-byte 32) ,y))
#.(1- (ash 1 32))))
-(define-source-transform 32bit-logical-andc1 (x y)
+(define-source-transform word-logical-andc1 (x y)
`(logandc1 (the (unsigned-byte 32) ,x) (the (unsigned-byte 32) ,y)))
-(define-source-transform 32bit-logical-andc2 (x y)
+(define-source-transform word-logical-andc2 (x y)
`(logandc2 (the (unsigned-byte 32) ,x) (the (unsigned-byte 32) ,y)))
(define-vop (shift-towards-someplace)
sb!vm:word
(foldable flushable movable))
-(defknown 32bit-logical-not (sb!vm:word) sb!vm:word
+(defknown word-logical-not (sb!vm:word) sb!vm:word
(foldable flushable movable))
-(defknown (32bit-logical-and 32bit-logical-nand
- 32bit-logical-or 32bit-logical-nor
- 32bit-logical-xor 32bit-logical-eqv
- 32bit-logical-andc1 32bit-logical-andc2
- 32bit-logical-orc1 32bit-logical-orc2)
+(defknown (word-logical-and word-logical-nand
+ word-logical-or word-logical-nor
+ word-logical-xor word-logical-eqv
+ word-logical-andc1 word-logical-andc2
+ word-logical-orc1 word-logical-orc2)
(sb!vm:word sb!vm:word) sb!vm:word
(foldable flushable movable))
(setf (%raw-bits result-bit-array index)
(,',wordfun (%raw-bits bit-array-1 index)
(%raw-bits bit-array-2 index))))))))))
- (def bit-and 32bit-logical-and)
- (def bit-ior 32bit-logical-or)
- (def bit-xor 32bit-logical-xor)
- (def bit-eqv 32bit-logical-eqv)
- (def bit-nand 32bit-logical-nand)
- (def bit-nor 32bit-logical-nor)
- (def bit-andc1 32bit-logical-andc1)
- (def bit-andc2 32bit-logical-andc2)
- (def bit-orc1 32bit-logical-orc1)
- (def bit-orc2 32bit-logical-orc2))
+ (def bit-and word-logical-and)
+ (def bit-ior word-logical-or)
+ (def bit-xor word-logical-xor)
+ (def bit-eqv word-logical-eqv)
+ (def bit-nand word-logical-nand)
+ (def bit-nor word-logical-nor)
+ (def bit-andc1 word-logical-andc1)
+ (def bit-andc2 word-logical-andc2)
+ (def bit-orc1 word-logical-orc1)
+ (def bit-orc2 word-logical-orc2))
(deftransform bit-not
((bit-array result-bit-array)
sb!vm:n-word-bits))))
((= index end-1)
(setf (%raw-bits result-bit-array index)
- (32bit-logical-not (%raw-bits bit-array index)))
+ (word-logical-not (%raw-bits bit-array index)))
result-bit-array)
(declare (optimize (speed 3) (safety 0))
(type index index end-1))
(setf (%raw-bits result-bit-array index)
- (32bit-logical-not (%raw-bits bit-array index))))))))
+ (word-logical-not (%raw-bits bit-array index))))))))
(deftransform bit-vector-= ((x y) (simple-bit-vector simple-bit-vector))
`(and (= (length x) (length y))
;;;; FIXME: I'm not sure where to put this. -- WHN 19990817
-(deftype sb!vm:word () `(unsigned-byte ,sb!vm:n-word-bits))
+(def!type sb!vm:word () `(unsigned-byte ,sb!vm:n-word-bits))
\f
;;;; implementation-dependent DEFTYPEs
;;;; 32-bit logical operations
-(define-source-transform 32bit-logical-not (x)
+(define-source-transform word-logical-not (x)
`(logand (lognot (the (unsigned-byte 32) ,x)) #.(1- (ash 1 32))))
-(deftransform 32bit-logical-and ((x y))
+(deftransform word-logical-and ((x y))
'(logand x y))
-(define-source-transform 32bit-logical-nand (x y)
- `(32bit-logical-not (32bit-logical-and ,x ,y)))
+(define-source-transform word-logical-nand (x y)
+ `(word-logical-not (word-logical-and ,x ,y)))
-(deftransform 32bit-logical-or ((x y))
+(deftransform word-logical-or ((x y))
'(logior x y))
-(define-source-transform 32bit-logical-nor (x y)
+(define-source-transform word-logical-nor (x y)
`(logand (lognor (the (unsigned-byte 32) ,x) (the (unsigned-byte 32) ,y))
#.(1- (ash 1 32))))
-(deftransform 32bit-logical-xor ((x y))
+(deftransform word-logical-xor ((x y))
'(logxor x y))
-(define-source-transform 32bit-logical-eqv (x y)
- `(32bit-logical-not (32bit-logical-xor ,x ,y)))
+(define-source-transform word-logical-eqv (x y)
+ `(word-logical-not (word-logical-xor ,x ,y)))
-(define-source-transform 32bit-logical-orc1 (x y)
- `(32bit-logical-or (32bit-logical-not ,x) ,y))
+(define-source-transform word-logical-orc1 (x y)
+ `(word-logical-or (word-logical-not ,x) ,y))
-(define-source-transform 32bit-logical-orc2 (x y)
- `(32bit-logical-or ,x (32bit-logical-not ,y)))
+(define-source-transform word-logical-orc2 (x y)
+ `(word-logical-or ,x (word-logical-not ,y)))
-(deftransform 32bit-logical-andc1 (x y)
+(deftransform word-logical-andc1 (x y)
'(logandc1 x y))
-(deftransform 32bit-logical-andc2 (x y)
+(deftransform word-logical-andc2 (x y)
'(logandc2 x y))
(define-vop (shift-towards-someplace)
(emit-label done)
(move result res))))
-(define-source-transform 32bit-logical-not (x)
+(define-source-transform word-logical-not (x)
`(logand (lognot (the (unsigned-byte 32) ,x)) #.(1- (ash 1 32))))
-(deftransform 32bit-logical-and ((x y))
+(deftransform word-logical-and ((x y))
'(logand x y))
-(define-source-transform 32bit-logical-nand (x y)
- `(32bit-logical-not (32bit-logical-and ,x ,y)))
+(define-source-transform word-logical-nand (x y)
+ `(word-logical-not (word-logical-and ,x ,y)))
-(deftransform 32bit-logical-or ((x y))
+(deftransform word-logical-or ((x y))
'(logior x y))
-(define-source-transform 32bit-logical-nor (x y)
+(define-source-transform word-logical-nor (x y)
`(logand (lognor (the (unsigned-byte 32) ,x) (the (unsigned-byte 32) ,y))
#.(1- (ash 1 32))))
-(deftransform 32bit-logical-xor ((x y))
+(deftransform word-logical-xor ((x y))
'(logxor x y))
-(define-source-transform 32bit-logical-eqv (x y)
- `(32bit-logical-not (32bit-logical-xor ,x ,y)))
+(define-source-transform word-logical-eqv (x y)
+ `(word-logical-not (word-logical-xor ,x ,y)))
-(define-source-transform 32bit-logical-orc1 (x y)
- `(32bit-logical-or (32bit-logical-not ,x) ,y))
+(define-source-transform word-logical-orc1 (x y)
+ `(word-logical-or (word-logical-not ,x) ,y))
-(define-source-transform 32bit-logical-orc2 (x y)
- `(32bit-logical-or ,x (32bit-logical-not ,y)))
+(define-source-transform word-logical-orc2 (x y)
+ `(word-logical-or ,x (word-logical-not ,y)))
-(define-source-transform 32bit-logical-andc1 (x y)
- `(32bit-logical-and (32bit-logical-not ,x) ,y))
+(define-source-transform word-logical-andc1 (x y)
+ `(word-logical-and (word-logical-not ,x) ,y))
-(define-source-transform 32bit-logical-andc2 (x y)
- `(32bit-logical-and ,x (32bit-logical-not ,y)))
+(define-source-transform word-logical-andc2 (x y)
+ `(word-logical-and ,x (word-logical-not ,y)))
(define-vop (shift-towards-someplace)
(:policy :fast-safe)
(emit-label done)
(move result res))))
-(define-source-transform 32bit-logical-not (x)
+(define-source-transform word-logical-not (x)
`(logand (lognot (the (unsigned-byte 32) ,x)) #.(1- (ash 1 32))))
-(deftransform 32bit-logical-and ((x y))
+(deftransform word-logical-and ((x y))
'(logand x y))
-(deftransform 32bit-logical-nand ((x y))
+(deftransform word-logical-nand ((x y))
'(logand (lognand x y) #.(1- (ash 1 32))))
-(deftransform 32bit-logical-or ((x y))
+(deftransform word-logical-or ((x y))
'(logior x y))
-(deftransform 32bit-logical-nor ((x y))
+(deftransform word-logical-nor ((x y))
'(logand (lognor x y) #.(1- (ash 1 32))))
-(deftransform 32bit-logical-xor ((x y))
+(deftransform word-logical-xor ((x y))
'(logxor x y))
-(deftransform 32bit-logical-eqv ((x y))
+(deftransform word-logical-eqv ((x y))
'(logand (logeqv x y) #.(1- (ash 1 32))))
-(deftransform 32bit-logical-orc1 ((x y))
+(deftransform word-logical-orc1 ((x y))
'(logand (logorc1 x y) #.(1- (ash 1 32))))
-(deftransform 32bit-logical-orc2 ((x y))
+(deftransform word-logical-orc2 ((x y))
'(logand (logorc2 x y) #.(1- (ash 1 32))))
-(deftransform 32bit-logical-andc1 ((x y))
+(deftransform word-logical-andc1 ((x y))
'(logand (logandc1 x y) #.(1- (ash 1 32))))
-(deftransform 32bit-logical-andc2 ((x y))
+(deftransform word-logical-andc2 ((x y))
'(logand (logandc2 x y) #.(1- (ash 1 32))))
(define-vop (shift-towards-someplace)
(emit-label done)
(move result res))))
-(define-source-transform 32bit-logical-not (x)
+(define-source-transform word-logical-not (x)
`(logand (lognot (the (unsigned-byte 32) ,x)) #.(1- (ash 1 32))))
-(deftransform 32bit-logical-and ((x y))
+(deftransform word-logical-and ((x y))
'(logand x y))
-(deftransform 32bit-logical-nand ((x y))
+(deftransform word-logical-nand ((x y))
'(logand (lognand x y) #.(1- (ash 1 32))))
-(deftransform 32bit-logical-or ((x y))
+(deftransform word-logical-or ((x y))
'(logior x y))
-(deftransform 32bit-logical-nor ((x y))
+(deftransform word-logical-nor ((x y))
'(logand (lognor x y) #.(1- (ash 1 32))))
-(deftransform 32bit-logical-xor ((x y))
+(deftransform word-logical-xor ((x y))
'(logxor x y))
-(deftransform 32bit-logical-eqv ((x y))
+(deftransform word-logical-eqv ((x y))
'(logand (logeqv x y) #.(1- (ash 1 32))))
-(deftransform 32bit-logical-orc1 ((x y))
+(deftransform word-logical-orc1 ((x y))
'(logand (logorc1 x y) #.(1- (ash 1 32))))
-(deftransform 32bit-logical-orc2 ((x y))
+(deftransform word-logical-orc2 ((x y))
'(logand (logorc2 x y) #.(1- (ash 1 32))))
-(deftransform 32bit-logical-andc1 ((x y))
+(deftransform word-logical-andc1 ((x y))
'(logand (logandc1 x y) #.(1- (ash 1 32))))
-(deftransform 32bit-logical-andc2 ((x y))
+(deftransform word-logical-andc2 ((x y))
'(logand (logandc2 x y) #.(1- (ash 1 32))))
(define-vop (shift-towards-someplace)
(move result prev)
(inst shrd result next :cl)))
-(define-source-transform 64bit-logical-not (x)
+(define-source-transform word-logical-not (x)
`(logand (lognot (the (unsigned-byte 64) ,x)) #.(1- (ash 1 64))))
-(deftransform 64bit-logical-and ((x y))
+(deftransform word-logical-and ((x y))
'(logand x y))
-(define-source-transform 64bit-logical-nand (x y)
- `(64bit-logical-not (64bit-logical-and ,x ,y)))
+(define-source-transform word-logical-nand (x y)
+ `(word-logical-not (word-logical-and ,x ,y)))
-(deftransform 64bit-logical-or ((x y))
+(deftransform word-logical-or ((x y))
'(logior x y))
-(define-source-transform 64bit-logical-nor (x y)
- `(64bit-logical-not (64bit-logical-or ,x ,y)))
+(define-source-transform word-logical-nor (x y)
+ `(word-logical-not (word-logical-or ,x ,y)))
-(deftransform 64bit-logical-xor ((x y))
+(deftransform word-logical-xor ((x y))
'(logxor x y))
-(define-source-transform 64bit-logical-eqv (x y)
- `(64bit-logical-not (64bit-logical-xor ,x ,y)))
+(define-source-transform word-logical-eqv (x y)
+ `(word-logical-not (word-logical-xor ,x ,y)))
-(define-source-transform 64bit-logical-orc1 (x y)
- `(64bit-logical-or (64bit-logical-not ,x) ,y))
+(define-source-transform word-logical-orc1 (x y)
+ `(word-logical-or (word-logical-not ,x) ,y))
-(define-source-transform 64bit-logical-orc2 (x y)
- `(64bit-logical-or ,x (64bit-logical-not ,y)))
+(define-source-transform word-logical-orc2 (x y)
+ `(word-logical-or ,x (word-logical-not ,y)))
-(define-source-transform 64bit-logical-andc1 (x y)
- `(64bit-logical-and (64bit-logical-not ,x) ,y))
+(define-source-transform word-logical-andc1 (x y)
+ `(word-logical-and (word-logical-not ,x) ,y))
-(define-source-transform 64bit-logical-andc2 (x y)
- `(64bit-logical-and ,x (64bit-logical-not ,y)))
+(define-source-transform word-logical-andc2 (x y)
+ `(word-logical-and ,x (word-logical-not ,y)))
;;; Only the lower 6 bits of the shift amount are significant.
(define-vop (shift-towards-someplace)
(move result prev)
(inst shrd result next :cl)))
-(define-source-transform 32bit-logical-not (x)
+(define-source-transform word-logical-not (x)
`(logand (lognot (the (unsigned-byte 32) ,x)) #.(1- (ash 1 32))))
-(deftransform 32bit-logical-and ((x y))
+(deftransform word-logical-and ((x y))
'(logand x y))
-(define-source-transform 32bit-logical-nand (x y)
- `(32bit-logical-not (32bit-logical-and ,x ,y)))
+(define-source-transform word-logical-nand (x y)
+ `(word-logical-not (word-logical-and ,x ,y)))
-(deftransform 32bit-logical-or ((x y))
+(deftransform word-logical-or ((x y))
'(logior x y))
-(define-source-transform 32bit-logical-nor (x y)
- `(32bit-logical-not (32bit-logical-or ,x ,y)))
+(define-source-transform word-logical-nor (x y)
+ `(word-logical-not (word-logical-or ,x ,y)))
-(deftransform 32bit-logical-xor ((x y))
+(deftransform word-logical-xor ((x y))
'(logxor x y))
-(define-source-transform 32bit-logical-eqv (x y)
- `(32bit-logical-not (32bit-logical-xor ,x ,y)))
+(define-source-transform word-logical-eqv (x y)
+ `(word-logical-not (word-logical-xor ,x ,y)))
-(define-source-transform 32bit-logical-orc1 (x y)
- `(32bit-logical-or (32bit-logical-not ,x) ,y))
+(define-source-transform word-logical-orc1 (x y)
+ `(word-logical-or (word-logical-not ,x) ,y))
-(define-source-transform 32bit-logical-orc2 (x y)
- `(32bit-logical-or ,x (32bit-logical-not ,y)))
+(define-source-transform word-logical-orc2 (x y)
+ `(word-logical-or ,x (word-logical-not ,y)))
-(define-source-transform 32bit-logical-andc1 (x y)
- `(32bit-logical-and (32bit-logical-not ,x) ,y))
+(define-source-transform word-logical-andc1 (x y)
+ `(word-logical-and (word-logical-not ,x) ,y))
-(define-source-transform 32bit-logical-andc2 (x y)
- `(32bit-logical-and ,x (32bit-logical-not ,y)))
+(define-source-transform word-logical-andc2 (x y)
+ `(word-logical-and ,x (word-logical-not ,y)))
;;; Only the lower 5 bits of the shift amount are significant.
(define-vop (shift-towards-someplace)
#-alpha ; bug 346
(progn
(flet ((test-function ()
- (declare (optimize (speed 1) (debug 2))) ; tail call elimination
+ (declare (optimize (speed 2) (debug 1))) ; tail call elimination
(/ 42 0)))
(assert (verify-backtrace #'test-function '/)))
(assert (verify-backtrace #'test-function '/))))
#-(or x86 alpha) ; bug 61
-(defun throw-test ()
- (throw 'no-such-tag t))
-(assert (verify-backtrace #'throw-test 'throw-test))
+(progn
+ (defun throw-test ()
+ (throw 'no-such-tag t))
+ (assert (verify-backtrace #'throw-test 'throw-test)))
;;; success
(quit :unix-status 104)
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.8.13.25"
+"0.8.13.26"