signed-num signed-reg)
(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)
\f
;;;; integer vectors whose elements are smaller than a byte, i.e.,
;;;; bit, 2-bit, and 4-bit vectors
(unsigned-reg
(inst or old value)))
(inst rol old :cl)
- (mov (make-ea :qword :base object :index word-index
- :scale n-word-bytes
- :disp (- (* vector-data-offset n-word-bytes)
- other-pointer-lowtag))
- old)
+ (inst mov (make-ea :qword :base object :index word-index
+ :scale n-word-bytes
+ :disp (- (* vector-data-offset n-word-bytes)
+ other-pointer-lowtag))
+ old)
(sc-case value
(immediate
(inst mov result (tn-value value)))