- (let ((ref-name-c (symbolicate ref-name "-C"))
- (set-name-c (symbolicate set-name "-C")))
- `(progn
- (define-vop (,ref-name)
- (:translate ,ref-name)
- (:policy :fast-safe)
- (:args (sap :scs (sap-reg))
- (offset :scs (signed-reg)))
- (:arg-types system-area-pointer signed-num)
- (:results (result :scs (,sc)))
- (:result-types ,type)
- (:generator 5
- ,@(if (eql size :long-float)
- '((load-long-reg result sap offset t))
- `((inst ,(ecase size
- (:byte (if signed 'ldsb 'ldub))
- (:short (if signed 'ldsh 'lduh))
- (:long 'ld)
- (:single 'ldf)
- (:double 'lddf))
- result sap offset)))))
- (define-vop (,ref-name-c)
- (:translate ,ref-name)
- (:policy :fast-safe)
- (:args (sap :scs (sap-reg)))
- (:arg-types system-area-pointer (:constant (signed-byte 13)))
- (:info offset)
- (:results (result :scs (,sc)))
- (:result-types ,type)
- (:generator 4
- ,@(if (eql size :long-float)
- '((load-long-reg result sap offset t))
- `((inst ,(ecase size
- (:byte (if signed 'ldsb 'ldub))
- (:short (if signed 'ldsh 'lduh))
- (:long 'ld)
- (:single 'ldf)
- (:double 'lddf))
- result sap offset)))))
- (define-vop (,set-name)
- (:translate ,set-name)
- (:policy :fast-safe)
- (:args (sap :scs (sap-reg))
- (offset :scs (signed-reg))
- (value :scs (,sc) :target result))
- (:arg-types system-area-pointer signed-num ,type)
- (:results (result :scs (,sc)))
- (:result-types ,type)
- (:generator 5
- ,@(if (eql size :long-float)
- '((store-long-reg value sap offset t))
- `((inst ,(ecase size
- (:byte 'stb)
- (:short 'sth)
- (:long 'st)
- (:single 'stf)
- (:double 'stdf))
- value sap offset)))
- (unless (location= result value)
- ,@(case size
- (:single
- '((inst fmovs result value)))
- (:double
- '((move-double-reg result value)))
- (:long-float
- '((move-long-reg result value)))
- (t
- '((inst move result value)))))))
- (define-vop (,set-name-c)
- (:translate ,set-name)
- (:policy :fast-safe)
- (:args (sap :scs (sap-reg))
- (value :scs (,sc) :target result))
- (:arg-types system-area-pointer (:constant (signed-byte 13)) ,type)
- (:info offset)
- (:results (result :scs (,sc)))
- (:result-types ,type)
- (:generator 4
- ,@(if (eql size :long-float)
- '((store-long-reg value sap offset t))
- `((inst ,(ecase size
- (:byte 'stb)
- (:short 'sth)
- (:long 'st)
- (:single 'stf)
- (:double 'stdf))
- value sap offset)))
- (unless (location= result value)
- ,@(case size
- (:single
- '((inst fmovs result value)))
- (:double
- '((move-double-reg result value)))
- (:long-float
- '((move-long-reg result value)))
- (t
- '((inst move result value)))))))))))
+ (let ((ref-name-c (symbolicate ref-name "-C"))
+ (set-name-c (symbolicate set-name "-C")))
+ `(progn
+ (define-vop (,ref-name)
+ (:translate ,ref-name)
+ (:policy :fast-safe)
+ (:args (sap :scs (sap-reg))
+ (offset :scs (signed-reg)))
+ (:arg-types system-area-pointer signed-num)
+ (:results (result :scs (,sc)))
+ (:result-types ,type)
+ (:generator 5
+ ,@(if (eql size :long-float)
+ '((load-long-reg result sap offset t))
+ `((inst ,(ecase size
+ (:byte (if signed 'ldsb 'ldub))
+ (:short (if signed 'ldsh 'lduh))
+ (:long 'ld)
+ (:single 'ldf)
+ (:double 'lddf))
+ result sap offset)))))
+ (define-vop (,ref-name-c)
+ (:translate ,ref-name)
+ (:policy :fast-safe)
+ (:args (sap :scs (sap-reg)))
+ (:arg-types system-area-pointer (:constant (signed-byte 13)))
+ (:info offset)
+ (:results (result :scs (,sc)))
+ (:result-types ,type)
+ (:generator 4
+ ,@(if (eql size :long-float)
+ '((load-long-reg result sap offset t))
+ `((inst ,(ecase size
+ (:byte (if signed 'ldsb 'ldub))
+ (:short (if signed 'ldsh 'lduh))
+ (:long 'ld)
+ (:single 'ldf)
+ (:double 'lddf))
+ result sap offset)))))
+ (define-vop (,set-name)
+ (:translate ,set-name)
+ (:policy :fast-safe)
+ (:args (sap :scs (sap-reg))
+ (offset :scs (signed-reg))
+ (value :scs (,sc) :target result))
+ (:arg-types system-area-pointer signed-num ,type)
+ (:results (result :scs (,sc)))
+ (:result-types ,type)
+ (:generator 5
+ ,@(if (eql size :long-float)
+ '((store-long-reg value sap offset t))
+ `((inst ,(ecase size
+ (:byte 'stb)
+ (:short 'sth)
+ (:long 'st)
+ (:single 'stf)
+ (:double 'stdf))
+ value sap offset)))
+ (unless (location= result value)
+ ,@(case size
+ (:single
+ '((inst fmovs result value)))
+ (:double
+ '((move-double-reg result value)))
+ (:long-float
+ '((move-long-reg result value)))
+ (t
+ '((inst move result value)))))))
+ (define-vop (,set-name-c)
+ (:translate ,set-name)
+ (:policy :fast-safe)
+ (:args (sap :scs (sap-reg))
+ (value :scs (,sc) :target result))
+ (:arg-types system-area-pointer (:constant (signed-byte 13)) ,type)
+ (:info offset)
+ (:results (result :scs (,sc)))
+ (:result-types ,type)
+ (:generator 4
+ ,@(if (eql size :long-float)
+ '((store-long-reg value sap offset t))
+ `((inst ,(ecase size
+ (:byte 'stb)
+ (:short 'sth)
+ (:long 'st)
+ (:single 'stf)
+ (:double 'stdf))
+ value sap offset)))
+ (unless (location= result value)
+ ,@(case size
+ (:single
+ '((inst fmovs result value)))
+ (:double
+ '((move-double-reg result value)))
+ (:long-float
+ '((move-long-reg result value)))
+ (t
+ '((inst move result value)))))))))))