- (:translate ,set-name)
- (:policy :fast-safe)
- (:args (object :scs (sap-reg))
- (value :scs (,sc) :target result))
- (:arg-types system-area-pointer
- (:constant ,(if (eq size :double)
- ;; We need to be able to add 4.
- `(integer ,(- (ash 1 16))
- ,(- (ash 1 16) 5))
- '(signed-byte 16)))
- ,type)
- (:info offset)
- (:results (result :scs (,sc)))
- (:result-types ,type)
- (:generator 5
- ,@(ecase size
- (:byte
- '((inst sb value object offset)
- (move result value)))
- (:short
- '((inst sh value object offset)
- (move result value)))
- (:long
- '((inst sw value object offset)
- (move result value)))
- (:single
- '((inst swc1 value object offset)
- (unless (location= result value)
- (inst fmove :single result value))))
- (:double
- (ecase *backend-byte-order*
- (:big-endian
- '((inst swc1 value object (+ offset n-word-bytes))
- (inst swc1-odd value object (+ offset n-word-bytes))
- (unless (location= result value)
- (inst fmove :double result value))))
- (:little-endian
- '((inst swc1 value object offset)
- (inst swc1-odd value object (+ offset n-word-bytes))
- (unless (location= result value)
- (inst fmove :double result value)))))))))))))
+ (:translate ,set-name)
+ (:policy :fast-safe)
+ (:args (object :scs (sap-reg))
+ (value :scs (,sc) :target result))
+ (:arg-types system-area-pointer
+ (:constant ,(if (eq size :double)
+ ;; We need to be able to add 4.
+ `(integer ,(- (ash 1 16))
+ ,(- (ash 1 16) 5))
+ '(signed-byte 16)))
+ ,type)
+ (:info offset)
+ (:results (result :scs (,sc)))
+ (:result-types ,type)
+ (:generator 4
+ ,@(ecase size
+ (:byte
+ '((inst sb value object offset)
+ (move result value)))
+ (:short
+ '((inst sh value object offset)
+ (move result value)))
+ (:long
+ '((inst sw value object offset)
+ (move result value)))
+ (:single
+ '((inst swc1 value object offset)
+ (unless (location= result value)
+ (inst fmove :single result value))))
+ (:double
+ (ecase *backend-byte-order*
+ (:big-endian
+ '((inst swc1 value object (+ offset n-word-bytes))
+ (inst swc1-odd value object (+ offset n-word-bytes))
+ (unless (location= result value)
+ (inst fmove :double result value))))
+ (:little-endian
+ '((inst swc1 value object offset)
+ (inst swc1-odd value object (+ offset n-word-bytes))
+ (unless (location= result value)
+ (inst fmove :double result value)))))))))))))