Skip to content
Snippets Groups Projects
Commit 9877cd61 authored by wlott's avatar wlott
Browse files

Changed the define-move-vops for the move-mumble-float-arguments vops to

also handle moving from descriptor-regs to fp-regs.  This way we can
pass floats in fp-regs in local call even if it starts in a descriptor-reg.

Added sap-ref-{single,double} and setters for them.
parent 78e49166
No related branches found
No related tags found
No related merge requests found
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
;;; Scott Fahlman (FAHLMAN@CMUC). ;;; Scott Fahlman (FAHLMAN@CMUC).
;;; ********************************************************************** ;;; **********************************************************************
;;; ;;;
;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/float.lisp,v 1.3 1990/07/05 09:56:03 ram Exp $ ;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/float.lisp,v 1.4 1990/07/07 01:00:23 wlott Exp $
;;; ;;;
;;; This file contains floating point support for the MIPS. ;;; This file contains floating point support for the MIPS.
;;; ;;;
...@@ -122,7 +122,8 @@ ...@@ -122,7 +122,8 @@
,@(when double-p ,@(when double-p
'((inst swc1-odd x nfp '((inst swc1-odd x nfp
(+ offset vm:word-bytes))))))))) (+ offset vm:word-bytes)))))))))
(define-move-vop ,name :move-argument (,sc) (,sc))))) (define-move-vop ,name :move-argument
(,sc descriptor-reg) (,sc)))))
(frob move-single-float-argument single-reg single-stack :single nil) (frob move-single-float-argument single-reg single-stack :single nil)
(frob move-double-float-argument double-reg double-stack :double t)) (frob move-double-float-argument double-reg double-stack :double t))
...@@ -331,3 +332,38 @@ ...@@ -331,3 +332,38 @@
(:generator 2 (:generator 2
(inst mfc1 lo-bits float) (inst mfc1 lo-bits float)
(inst nop))) (inst nop)))
;;;; SAP accessors/setters
(define-vop (sap-ref-single sap-ref)
(:translate sap-ref-single)
(:results (result :scs (single-reg)))
(:result-types single-float)
(:variant :single nil))
(define-vop (sap-set-single sap-set)
(:translate %set-sap-ref-single)
(:args (object :scs (sap-reg) :target sap)
(offset :scs (any-reg negative-immediate zero immediate))
(value :scs (single-reg) :target result))
(:arg-types system-area-pointer positive-fixnum single-float)
(:results (result :scs (single-reg)))
(:result-types single-float)
(:variant :single))
(define-vop (sap-ref-double sap-ref)
(:translate sap-ref-double)
(:results (result :scs (double-reg)))
(:result-types double-float)
(:variant :double nil))
(define-vop (sap-set-double sap-set)
(:translate %set-sap-ref-double)
(:args (object :scs (sap-reg) :target sap)
(offset :scs (any-reg negative-immediate zero immediate))
(value :scs (double-reg) :target result))
(:arg-types system-area-pointer positive-fixnum double-float)
(:results (result :scs (double-reg)))
(:result-types double-float)
(:variant :double))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment