From 4ac1973c1277f6f4e6d3f1ebf08fbe905fd253b0 Mon Sep 17 00:00:00 2001 From: dtc <dtc> Date: Sat, 12 Aug 2000 07:33:42 +0000 Subject: [PATCH] Add transforms for the sap-ref-64 operations. --- compiler/sparc/sap.lisp | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/compiler/sparc/sap.lisp b/compiler/sparc/sap.lisp index 18388e10d..ae19ff542 100644 --- a/compiler/sparc/sap.lisp +++ b/compiler/sparc/sap.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/sparc/sap.lisp,v 1.9 1998/03/21 08:05:24 dtc Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/sparc/sap.lisp,v 1.10 2000/08/12 07:33:42 dtc Rel $") ;;; ;;; ********************************************************************** ;;; @@ -296,3 +296,24 @@ (inst add sap vector (- (* vector-data-offset word-bytes) other-pointer-type)))) + + +;;; Transforms for 64-bit SAP accessors. + +(deftransform sap-ref-64 ((sap offset) (* *)) + '(logior (ash (sap-ref-32 sap offset) 32) + (sap-ref-32 sap (+ offset 4)))) + +(deftransform signed-sap-ref-64 ((sap offset) (* *)) + '(logior (ash (signed-sap-ref-32 sap offset) 32) + (sap-ref-32 sap (+ 4 offset)))) + +(deftransform %set-sap-ref-64 ((sap offset value) (* * *)) + '(progn + (%set-sap-ref-32 sap offset (ash value -32)) + (%set-sap-ref-32 sap (+ offset 4) (logand value #xffffffff)))) + +(deftransform %set-signed-sap-ref-64 ((sap offset value) (* * *)) + '(progn + (%set-signed-sap-ref-32 sap offset (ash value -32)) + (%set-sap-ref-32 sap (+ 4 offset) (logand value #xffffffff)))) -- GitLab