lowtag-mask)
bytes)
(inst li (lognot lowtag-mask) header)
(inst and bytes header bytes)
(inst addq rank (fixnumize (1- array-dimensions-offset)) header)
lowtag-mask)
bytes)
(inst li (lognot lowtag-mask) header)
(inst and bytes header bytes)
(inst addq rank (fixnumize (1- array-dimensions-offset)) header)
- array-dimensions-offset other-pointer-type
- (any-reg) positive-fixnum sb!impl::%set-array-dimension #+gengc nil)
-
-
-(defknown sb!impl::%array-rank (t) index (flushable))
+ array-dimensions-offset other-pointer-lowtag
+ (any-reg) positive-fixnum sb!kernel:%set-array-dimension #!+gengc nil)
(:policy :fast-safe)
(:args (x :scs (descriptor-reg)))
(:temporary (:scs (non-descriptor-reg)) temp)
(:results (res :scs (any-reg descriptor-reg)))
(:generator 6
(:policy :fast-safe)
(:args (x :scs (descriptor-reg)))
(:temporary (:scs (non-descriptor-reg)) temp)
(:results (res :scs (any-reg descriptor-reg)))
(:generator 6
- vector-data-offset other-pointer-type
- ,(remove-if #'(lambda (x) (member x '(null zero))) scs)
+ vector-data-offset other-pointer-lowtag
+ ,(remove-if (lambda (x) (member x '(null zero))) scs)
- ,size ,signed vector-data-offset other-pointer-type ,scs
+ ,size ,signed vector-data-offset other-pointer-lowtag ,scs
,element-type data-vector-ref)
(define-partial-setter ,(symbolicate "DATA-VECTOR-SET/" type)
,type
,element-type data-vector-ref)
(define-partial-setter ,(symbolicate "DATA-VECTOR-SET/" type)
,type
,element-type data-vector-set)))
(def-small-data-vector-frobs (type bits)
,element-type data-vector-set)))
(def-small-data-vector-frobs (type bits)
(bit-shift (1- (integer-length elements-per-word))))
`(progn
(define-vop (,(symbolicate 'data-vector-ref/ type))
(bit-shift (1- (integer-length elements-per-word))))
`(progn
(define-vop (,(symbolicate 'data-vector-ref/ type))
(floor index ,elements-per-word)
(loadw result object (+ word
vector-data-offset)
(floor index ,elements-per-word)
(loadw result object (+ word
vector-data-offset)
(unless (zerop extra)
(inst srl result (* extra ,bits) result))
(unless (= extra ,(1- elements-per-word))
(unless (zerop extra)
(inst srl result (* extra ,bits) result))
(unless (= extra ,(1- elements-per-word))
(:generator 20
(multiple-value-bind (word extra)
(floor index ,elements-per-word)
(:generator 20
(multiple-value-bind (word extra)
(floor index ,elements-per-word)
(def-partial-data-vector-frobs simple-array-unsigned-byte-8 positive-fixnum
:byte nil unsigned-reg signed-reg)
(def-partial-data-vector-frobs simple-array-unsigned-byte-8 positive-fixnum
:byte nil unsigned-reg signed-reg)
(def-partial-data-vector-frobs simple-array-unsigned-byte-16 positive-fixnum
:short nil unsigned-reg signed-reg)
(def-partial-data-vector-frobs simple-array-unsigned-byte-16 positive-fixnum
:short nil unsigned-reg signed-reg)
(def-full-data-vector-frobs simple-array-signed-byte-30 tagged-num any-reg)
(def-full-data-vector-frobs simple-array-signed-byte-32 signed-num
(def-full-data-vector-frobs simple-array-signed-byte-30 tagged-num any-reg)
(def-full-data-vector-frobs simple-array-signed-byte-32 signed-num
lip)
(unless (location= result-real value-real)
(inst fmove value-real result-real)))
(let ((value-imag (complex-single-reg-imag-tn value))
(result-imag (complex-single-reg-imag-tn result)))
(inst sts value-imag
lip)
(unless (location= result-real value-real)
(inst fmove value-real result-real)))
(let ((value-imag (complex-single-reg-imag-tn value))
(result-imag (complex-single-reg-imag-tn result)))
(inst sts value-imag
lip)
(unless (location= result-real value-real)
(inst fmove value-real result-real)))
(let ((value-imag (complex-double-reg-imag-tn value))
(result-imag (complex-double-reg-imag-tn result)))
(inst stt value-imag
lip)
(unless (location= result-real value-real)
(inst fmove value-real result-real)))
(let ((value-imag (complex-double-reg-imag-tn value))
(result-imag (complex-double-reg-imag-tn result)))
(inst stt value-imag
;;; These vops are useful for accessing the bits of a vector irrespective of
;;; what type of vector it is.
;;;
;;; These vops are useful for accessing the bits of a vector irrespective of
;;; what type of vector it is.
;;;