(:temporary (:scs (interior-reg)) lip)
(:temporary (:scs (non-descriptor-reg)) type)
(:results (result :scs (descriptor-reg)))
(:temporary (:scs (interior-reg)) lip)
(:temporary (:scs (non-descriptor-reg)) type)
(:results (result :scs (descriptor-reg)))
(:translate %instance-ref)
(:variant instance-slots-offset instance-pointer-lowtag)
(:arg-types instance positive-fixnum))
(define-vop (instance-index-set word-index-set)
(:translate %instance-ref)
(:variant instance-slots-offset instance-pointer-lowtag)
(:arg-types instance positive-fixnum))
(define-vop (instance-index-set word-index-set)
(:translate %instance-set)
(:variant instance-slots-offset instance-pointer-lowtag)
(:arg-types instance positive-fixnum *))
(:translate %instance-set)
(:variant instance-slots-offset instance-pointer-lowtag)
(:arg-types instance positive-fixnum *))
(:arg-types * positive-fixnum)
(:results (value :scs (unsigned-reg)))
(:temporary (:scs (non-descriptor-reg)) offset)
(:arg-types * positive-fixnum)
(:results (value :scs (unsigned-reg)))
(:temporary (:scs (non-descriptor-reg)) offset)
(value :scs (unsigned-reg)))
(:arg-types * positive-fixnum unsigned-num)
(:results (result :scs (unsigned-reg)))
(value :scs (unsigned-reg)))
(:arg-types * positive-fixnum unsigned-num)
(:results (result :scs (unsigned-reg)))
(:arg-types * positive-fixnum)
(:results (value :scs (single-reg)))
(:temporary (:scs (non-descriptor-reg)) offset)
(:arg-types * positive-fixnum)
(:results (value :scs (single-reg)))
(:temporary (:scs (non-descriptor-reg)) offset)
(:arg-types * positive-fixnum single-float)
(:results (result :scs (single-reg)))
(:result-types single-float)
(:arg-types * positive-fixnum single-float)
(:results (result :scs (single-reg)))
(:result-types single-float)
(:arg-types * positive-fixnum)
(:results (value :scs (double-reg)))
(:temporary (:scs (non-descriptor-reg)) offset)
(:arg-types * positive-fixnum)
(:results (value :scs (double-reg)))
(:temporary (:scs (non-descriptor-reg)) offset)
(:arg-types * positive-fixnum double-float)
(:results (result :scs (double-reg)))
(:result-types double-float)
(:arg-types * positive-fixnum double-float)
(:results (result :scs (double-reg)))
(:result-types double-float)
(:arg-types * positive-fixnum)
(:results (value :scs (complex-single-reg)))
(:temporary (:scs (non-descriptor-reg)) offset)
(:arg-types * positive-fixnum)
(:results (value :scs (complex-single-reg)))
(:temporary (:scs (non-descriptor-reg)) offset)
(:arg-types * positive-fixnum complex-single-float)
(:results (result :scs (complex-single-reg)))
(:result-types complex-single-float)
(:arg-types * positive-fixnum complex-single-float)
(:results (result :scs (complex-single-reg)))
(:result-types complex-single-float)
(- (* (- instance-slots-offset 2) n-word-bytes)
instance-pointer-lowtag))
(let ((value-real (complex-single-reg-real-tn value))
(- (* (- instance-slots-offset 2) n-word-bytes)
instance-pointer-lowtag))
(let ((value-real (complex-single-reg-real-tn value))
(inst stfsx value-real object offset)
(unless (location= result-real value-real)
(inst frsp result-real value-real)))
(inst addi offset offset n-word-bytes)
(let ((value-imag (complex-single-reg-imag-tn value))
(inst stfsx value-real object offset)
(unless (location= result-real value-real)
(inst frsp result-real value-real)))
(inst addi offset offset n-word-bytes)
(let ((value-imag (complex-single-reg-imag-tn value))
(inst stfsx value-imag object offset)
(unless (location= result-imag value-imag)
(inst frsp result-imag value-imag)))))
(inst stfsx value-imag object offset)
(unless (location= result-imag value-imag)
(inst frsp result-imag value-imag)))))
(:arg-types * positive-fixnum)
(:results (value :scs (complex-double-reg)))
(:temporary (:scs (non-descriptor-reg)) offset)
(:arg-types * positive-fixnum)
(:results (value :scs (complex-double-reg)))
(:temporary (:scs (non-descriptor-reg)) offset)
(:arg-types * positive-fixnum complex-double-float)
(:results (result :scs (complex-double-reg)))
(:result-types complex-double-float)
(:arg-types * positive-fixnum complex-double-float)
(:results (result :scs (complex-double-reg)))
(:result-types complex-double-float)
(- (* (- instance-slots-offset 4) n-word-bytes)
instance-pointer-lowtag))
(let ((value-real (complex-double-reg-real-tn value))
(- (* (- instance-slots-offset 4) n-word-bytes)
instance-pointer-lowtag))
(let ((value-real (complex-double-reg-real-tn value))
(inst stfdx value-real object offset)
(unless (location= result-real value-real)
(inst fmr result-real value-real)))
(inst addi offset offset (* 2 n-word-bytes))
(let ((value-imag (complex-double-reg-imag-tn value))
(inst stfdx value-real object offset)
(unless (location= result-real value-real)
(inst fmr result-real value-real)))
(inst addi offset offset (* 2 n-word-bytes))
(let ((value-imag (complex-double-reg-imag-tn value))
(inst stfdx value-imag object offset)
(unless (location= result-imag value-imag)
(inst fmr result-imag value-imag)))))
(inst stfdx value-imag object offset)
(unless (location= result-imag value-imag)
(inst fmr result-imag value-imag)))))