From: Juho S. <js...@us...> - 2004-12-04 01:28:14
|
Update of /cvsroot/sbcl/sbcl/src/compiler/x86-64 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20815/src/compiler/x86-64 Modified Files: Tag: x86-64-again-branch macros.lisp Log Message: 0.8.15.14.x86-64-again-branch.26: Can be used as host compiler for SBCL build. * Fix one more problem with sign-extension of immediates, this time in STOREW. Index: macros.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/x86-64/macros.lisp,v retrieving revision 1.1 retrieving revision 1.1.8.1 diff -u -d -r1.1 -r1.1.8.1 --- macros.lisp 26 Jun 2004 17:48:22 -0000 1.1 +++ macros.lisp 4 Dec 2004 01:27:56 -0000 1.1.8.1 @@ -48,6 +48,8 @@ (defmacro make-ea-for-object-slot (ptr slot lowtag) `(make-ea :qword :base ,ptr :disp (- (* ,slot n-word-bytes) ,lowtag))) +(defmacro make-ea-for-object-slot-half (ptr slot lowtag) + `(make-ea :dword :base ,ptr :disp (- (* ,slot n-word-bytes) ,lowtag))) (defmacro loadw (value ptr &optional (slot 0) (lowtag 0)) `(inst mov ,value (make-ea-for-object-slot ,ptr ,slot ,lowtag))) @@ -58,9 +60,10 @@ (not (typep ,value '(or (signed-byte 32) (unsigned-byte 32))))) (multiple-value-bind (lo hi) (dwords-for-quad ,value) - (inst mov (make-ea-for-object-slot ,ptr ,slot ,lowtag) lo) - (inst mov (make-ea-for-object-slot ,ptr (floor (+ ,slot 0.5)) - ,lowtag) hi))) + (inst mov (make-ea-for-object-slot-half + ,ptr ,slot ,lowtag) lo) + (inst mov (make-ea-for-object-slot-half + ,ptr (+ ,slot 1/2) ,lowtag) hi))) (t (inst mov (make-ea-for-object-slot ,ptr ,slot ,lowtag) ,value))))) |