(:vop-var vop)
(:save-p :compute-only)
(:generator 5
- (let ((error (generate-error-code vop invalid-array-index-error
+ (let ((error (generate-error-code vop 'invalid-array-index-error
array bound index))
(index (if (sc-is index immediate)
(fixnumize (tn-value index))
(def-full-data-vector-frobs simple-array-unsigned-byte-63 unsigned-num
unsigned-reg))
-(define-full-compare-and-swap simple-vector-compare-and-swap
- simple-vector vector-data-offset other-pointer-lowtag
- (descriptor-reg any-reg) *
- %simple-vector-compare-and-swap)
+(define-full-compare-and-swap %compare-and-swap-svref simple-vector
+ vector-data-offset other-pointer-lowtag
+ (descriptor-reg any-reg) *
+ %compare-and-swap-svref)
\f
;;;; integer vectors whose elements are smaller than a byte, i.e.,
;;;; bit, 2-bit, and 4-bit vectors
complex-offset)
other-pointer-lowtag))))))
-(define-vop (data-vector-ref/simple-array-single-float)
+(define-vop (data-vector-ref-with-offset/simple-array-single-float)
(:note "inline array access")
(:translate data-vector-ref-with-offset)
(:policy :fast-safe)
(inst shr dword-index 1)
(inst movss value (make-ea-for-float-ref object dword-index offset 4))))
-(define-vop (data-vector-ref-c/simple-array-single-float)
+(define-vop (data-vector-ref-c-with-offset/simple-array-single-float)
(:note "inline array access")
(:translate data-vector-ref-with-offset)
(:policy :fast-safe)
(:generator 4
(inst movss value (make-ea-for-float-ref object index offset 4))))
-(define-vop (data-vector-set/simple-array-single-float)
+(define-vop (data-vector-set-with-offset/simple-array-single-float)
(:note "inline array store")
(:translate data-vector-set-with-offset)
(:policy :fast-safe)
(unless (location= result value)
(inst movss result value))))
-(define-vop (data-vector-set-c/simple-array-single-float)
+(define-vop (data-vector-set-c-with-offset/simple-array-single-float)
(:note "inline array store")
(:translate data-vector-set-with-offset)
(:policy :fast-safe)
(unless (location= result value)
(inst movss result value))))
-(define-vop (data-vector-ref/simple-array-double-float)
+(define-vop (data-vector-ref-with-offset/simple-array-double-float)
(:note "inline array access")
(:translate data-vector-ref-with-offset)
(:policy :fast-safe)
(:generator 6
(inst movsd value (make-ea-for-float-ref object index offset 8))))
-(define-vop (data-vector-set/simple-array-double-float)
+(define-vop (data-vector-set-with-offset/simple-array-double-float)
(:note "inline array store")
(:translate data-vector-set-with-offset)
(:policy :fast-safe)
(unless (location= result value)
(inst movsd result value))))
-(define-vop (data-vector-set-c/simple-array-double-float)
+(define-vop (data-vector-set-c-with-offset/simple-array-double-float)
(:note "inline array store")
(:translate data-vector-set-with-offset)
(:policy :fast-safe)
;;; complex float variants
-(define-vop (data-vector-ref/simple-array-complex-single-float)
+(define-vop (data-vector-ref-with-offset/simple-array-complex-single-float)
(:note "inline array access")
(:translate data-vector-ref-with-offset)
(:policy :fast-safe)
(inst movss imag-tn (make-ea-for-float-ref object index offset 8
:complex-offset 4)))))
-(define-vop (data-vector-ref-c/simple-array-complex-single-float)
+(define-vop (data-vector-ref-c-with-offset/simple-array-complex-single-float)
(:note "inline array access")
(:translate data-vector-ref-with-offset)
(:policy :fast-safe)
(inst movss imag-tn (make-ea-for-float-ref object index offset 8
:complex-offset 4)))))
-(define-vop (data-vector-set/simple-array-complex-single-float)
+(define-vop (data-vector-set-with-offset/simple-array-complex-single-float)
(:note "inline array store")
(:translate data-vector-set-with-offset)
(:policy :fast-safe)
(unless (location= value-imag result-imag)
(inst movss result-imag value-imag)))))
-(define-vop (data-vector-set-c/simple-array-complex-single-float)
+(define-vop (data-vector-set-c-with-offset/simple-array-complex-single-float)
(:note "inline array store")
(:translate data-vector-set-with-offset)
(:policy :fast-safe)
(unless (location= value-imag result-imag)
(inst movss result-imag value-imag)))))
-(define-vop (data-vector-ref/simple-array-complex-double-float)
+(define-vop (data-vector-ref-with-offset/simple-array-complex-double-float)
(:note "inline array access")
(:translate data-vector-ref-with-offset)
(:policy :fast-safe)
(inst movsd imag-tn (make-ea-for-float-ref object index offset 16 :scale 2
:complex-offset 8)))))
-(define-vop (data-vector-ref-c/simple-array-complex-double-float)
+(define-vop (data-vector-ref-c-with-offset/simple-array-complex-double-float)
(:note "inline array access")
(:translate data-vector-ref-with-offset)
(:policy :fast-safe)
(inst movsd imag-tn (make-ea-for-float-ref object index offset 16 :scale 2
:complex-offset 8)))))
-(define-vop (data-vector-set/simple-array-complex-double-float)
+(define-vop (data-vector-set-with-offset/simple-array-complex-double-float)
(:note "inline array store")
(:translate data-vector-set-with-offset)
(:policy :fast-safe)
(unless (location= value-imag result-imag)
(inst movsd result-imag value-imag)))))
-(define-vop (data-vector-set-c/simple-array-complex-double-float)
+(define-vop (data-vector-set-c-with-offset/simple-array-complex-double-float)
(:note "inline array store")
(:translate data-vector-set-with-offset)
(:policy :fast-safe)
(macrolet ((define-data-vector-frobs (ptype mov-inst type
8-bit-tns-p &rest scs)
`(progn
- (define-vop (,(symbolicate "DATA-VECTOR-REF/" ptype))
+ (define-vop (,(symbolicate "DATA-VECTOR-REF-WITH-OFFSET/" ptype))
(:translate data-vector-ref-with-offset)
(:policy :fast-safe)
(:args (object :scs (descriptor-reg))
:disp (- (+ (* vector-data-offset n-word-bytes)
offset)
other-pointer-lowtag)))))
- (define-vop (,(symbolicate "DATA-VECTOR-REF-C/" ptype))
+ (define-vop (,(symbolicate "DATA-VECTOR-REF-C-WITH-OFFSET/" ptype))
(:translate data-vector-ref-with-offset)
(:policy :fast-safe)
(:args (object :scs (descriptor-reg)))
:disp (- (+ (* vector-data-offset n-word-bytes)
index offset)
other-pointer-lowtag)))))
- (define-vop (,(symbolicate "DATA-VECTOR-SET/" ptype))
+ (define-vop (,(symbolicate "DATA-VECTOR-SET-WITH-OFFSET/" ptype))
(:translate data-vector-set-with-offset)
(:policy :fast-safe)
(:args (object :scs (descriptor-reg) :to (:eval 0))
other-pointer-lowtag))
,(if 8-bit-tns-p 'value 'al-tn))
(move result ,(if 8-bit-tns-p 'value 'rax))))
- (define-vop (,(symbolicate "DATA-VECTOR-SET-C/" ptype))
+ (define-vop (,(symbolicate "DATA-VECTOR-SET-C-WITH-OFFSET/" ptype))
(:translate data-vector-set-with-offset)
(:policy :fast-safe)
(:args (object :scs (descriptor-reg) :to (:eval 0))
;;; unsigned-byte-16
(macrolet ((define-data-vector-frobs (ptype mov-inst type &rest scs)
`(progn
- (define-vop (,(symbolicate "DATA-VECTOR-REF/" ptype))
+ (define-vop (,(symbolicate "DATA-VECTOR-REF-WITH-OFFSET/" ptype))
(:translate data-vector-ref-with-offset)
(:policy :fast-safe)
(:args (object :scs (descriptor-reg))
:disp (- (+ (* vector-data-offset n-word-bytes)
(* offset 2))
other-pointer-lowtag)))))
- (define-vop (,(symbolicate "DATA-VECTOR-REF-C/" ptype))
+ (define-vop (,(symbolicate "DATA-VECTOR-REF-C-WITH-OFFSET/" ptype))
(:translate data-vector-ref-with-offset)
(:policy :fast-safe)
(:args (object :scs (descriptor-reg)))
(* 2 index)
(* 2 offset))
other-pointer-lowtag)))))
- (define-vop (,(symbolicate "DATA-VECTOR-SET/" ptype))
+ (define-vop (,(symbolicate "DATA-VECTOR-SET-WITH-OFFSET/" ptype))
(:translate data-vector-set-with-offset)
(:policy :fast-safe)
(:args (object :scs (descriptor-reg) :to (:eval 0))
ax-tn)
(move result eax)))
- (define-vop (,(symbolicate "DATA-VECTOR-SET-C/" ptype))
+ (define-vop (,(symbolicate "DATA-VECTOR-SET-C-WITH-OFFSET/" ptype))
(:translate data-vector-set-with-offset)
(:policy :fast-safe)
(:args (object :scs (descriptor-reg) :to (:eval 0))
(macrolet ((define-data-vector-frobs (ptype mov-inst type &rest scs)
`(progn
- (define-vop (,(symbolicate "DATA-VECTOR-REF/" ptype))
+ (define-vop (,(symbolicate "DATA-VECTOR-REF-WITH-OFFSET/" ptype))
(:translate data-vector-ref-with-offset)
(:policy :fast-safe)
(:args (object :scs (descriptor-reg))
:disp (- (+ (* vector-data-offset n-word-bytes)
(* offset 4))
other-pointer-lowtag)))))
- (define-vop (,(symbolicate "DATA-VECTOR-REF-C/" ptype))
+ (define-vop (,(symbolicate "DATA-VECTOR-REF-C-WITH-OFFSET/" ptype))
(:translate data-vector-ref-with-offset)
(:policy :fast-safe)
(:args (object :scs (descriptor-reg)))
(* 4 index)
(* 4 offset))
other-pointer-lowtag)))))
- (define-vop (,(symbolicate "DATA-VECTOR-SET/" ptype))
+ (define-vop (,(symbolicate "DATA-VECTOR-SET-WITH-OFFSET/" ptype))
(:translate data-vector-set-with-offset)
(:policy :fast-safe)
(:args (object :scs (descriptor-reg) :to (:eval 0))
eax-tn)
(move result rax)))
- (define-vop (,(symbolicate "DATA-VECTOR-SET-C/" ptype))
+ (define-vop (,(symbolicate "DATA-VECTOR-SET-C-WITH-OFFSET/" ptype))
(:translate data-vector-set-with-offset)
(:policy :fast-safe)
(:args (object :scs (descriptor-reg) :to (:eval 0))
\f
;;; These vops are useful for accessing the bits of a vector
;;; irrespective of what type of vector it is.
-(define-full-reffer raw-bits * 0 other-pointer-lowtag (unsigned-reg)
- unsigned-num %raw-bits)
-(define-full-setter set-raw-bits * 0 other-pointer-lowtag (unsigned-reg)
- unsigned-num %set-raw-bits)
(define-full-reffer vector-raw-bits * vector-data-offset other-pointer-lowtag
(unsigned-reg) unsigned-num %vector-raw-bits)
(define-full-setter set-vector-raw-bits * vector-data-offset other-pointer-lowtag